document.write,Array.push并将字符串放在一起

时间:2016-10-25 16:41:06

标签: javascript html arrays string

我希望我的代码能够通过document.write()替换用户看到的当前HTML页面。它确实取代了HTML页面,它只是没有显示我希望它显示的文本。如果我使用我的代码通过addElement()函数添加元素,

mdl-tabs__tab-bar

它采用用户放置的参数来创建有效标记,例如

function addElement(a, b) {
    var startTag, tagValue, endTag, finalTag;

    // htmlify
    if (b === undefined) {
        startTag = "<p>";
        endTag = "</p>";
    } else {
        startTag = "<" + b + ">";
        endTag = "</" + b + ">";
    }



    finalTag = startTag + tagValue + endTag;
    eio.push(finalTag);
};

然后将其解析为HTML标记(此处填写变量),

addElement("This is a valid h1 tag.", "h1");

并将其推送到名为eio的数组中(变量再次填充)。

var finalTag = "<" + "h1" + ">" + "This is a valid h1 tag." + "</" + "h1" + ">"

在调用displayElements()之前不使用此数组,其中我使用for循环将所有不同的字符串放在一起。以下是我的表现方式:

eio.push("<h1>This is a valid h1 tag.</h1>");

再次使用我们的例子,finalString看起来应该是这样的

function displayElements() {
    finalString = "<!DOCTYPE html><html><head><title>Hello World!</title></head><body>";
    for (i = 0; i === eio.length; i++) {
        finalString += eio[i];
    }
    finalString += "</body></html>";
    document.write(finalString);
};

当我们在document.write()函数中使用它时。这个给我们留下一个HTML页面,其中标有&#34;这是一个有效的h1标签。&#34;用粗体字体,但它只留下一个空白屏幕。然而,有一件有趣的事情是,当我们调用函数时标题会更新,但页面仍然是空白的。

You can see the entire code hereand go to the example website here

1 个答案:

答案 0 :(得分:1)

sabithpocker和我已经指出了两个问题。我会总结这些来做出这个答案。

您的addElement方法接受参数a并且不执行任何操作。相反,您使用的是局部变量tagValue。您可以通过将a的值分配给tagValue来修复它。

function addElement(a, b) {
    var startTag, endTag, finalTag;
    var tagValue = a;

    // htmlify
    if (b === undefined) {
        startTag = "<p>";
        endTag = "</p>";
    } else {
        startTag = "<" + b + ">";
        endTag = "</" + b + ">";
    }

    finalTag = startTag + tagValue + endTag;
    eio.push(finalTag);
};

第二个问题是displayElements方法的for循环中的拼写错误。它应该是

for (i = 0; i < eio.length; i++) {
    finalString += eio[i];
}