我正在使用for循环根据array
的长度生成段落标记。我希望生成的每个p标签都具有相同的innerHTML
。我可以使用类名生成标记,但innerHTML
仍为空白。
我尝试过以下无效,不确定我做错了什么。
for (i = 0; i < numArray.length; i++) {
var line = document.createElement("p");
line.className = "line";
document.body.appendChild(line);
var b = document.getElementsByClassName("line");
b.innerHTML = "|";
}
答案 0 :(得分:2)
您无需致电getElementsByClassName
即可更改line
的innerHTML,因为您已经拥有对DOM元素的引用。
for (i = 0; i < numArray.length; i++) {
var line = document.createElement("p");
line.className = "line";
line.innerHTML = "|";
document.body.appendChild(line);
}
并解释为什么它不起作用,这是因为getElementsByClassName返回一组元素,你需要循环它们。
答案 1 :(得分:0)
getElementsByClassName
应该返回一个元素数组,而不是单个元素。您可以尝试:getElementsByClassName('line')[i]
,如果您有某种原因,那就是具体。
注意: getElementsByClassName('line')[i]
可能不会引用您刚创建的对象,除非没有其他“页面上的行。 它扫描文档中所有具有一个名为line的类的元素,可以是段落或其他元素类型。
如需更好的替代方案,请参阅以下所做的更改。这样:
numArray
长度缓存到变量中,因此您不会在每次循环迭代时执行该操作var
关键字来避免循环变量的范围冲突for ( var i=0, n=numArray.length; i < n; i++) {
var line = document.createElement("p");
line.className = "line";
line.innerHTML = '|';
document.body.appendChild(line);
}