![](/img/trans.png)
[英]How do I make linebreaks for innerhtml content in a p tag using javascript
[英]JavaScript use for loop to create p tag with innerHTML content filled in
我正在使用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 = "|";
}
你并不需要调用getElementsByClassName
可以改变的innerHTML line
,因为你已经有了参考的DOM元素。
for (i = 0; i < numArray.length; i++) {
var line = document.createElement("p");
line.className = "line";
line.innerHTML = "|";
document.body.appendChild(line);
}
并解释为什么它不起作用,这是因为getElementsByClassName返回一个集合的元素,您需要遍历它们。
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.