[英]Appending a node multiple times using JavaScript only appends once
Why, when I run this sample code, is only one 'A node' appended to my ul list? 为什么当我运行此示例代码时,ul列表中仅附加了一个“ A节点”? Do I need to create a new node each time I have to append?
每次必须追加时都需要创建一个新节点吗? Note: Using
appendNode(node.cloneNode(true))
does append many times. 注意:使用
appendNode(node.cloneNode(true))
确实会多次追加。
let node = document.createElement("LI"); let textnode = document.createTextNode("A node"); node.appendChild(textnode); for (let x = 0; x < 5; x++) { document.getElementById("myList").appendChild(node); }
<ul id="myList"> </ul>
It's because you're appending the same node each time - place all your code inside the for
loop and it works: 这是因为您每次都附加相同的节点-将您的所有代码放入
for
循环中,即可正常工作:
for (let x = 0; x < 5; x++) { let node = document.createElement("LI"); let textnode = document.createTextNode("A node"); node.appendChild(textnode); document.getElementById("myList").appendChild(node); }
<ul id="myList"> </ul>
Alternatively, use cloneNode
: 或者,使用
cloneNode
:
let node = document.createElement("LI"); let textnode = document.createTextNode("A node"); node.appendChild(textnode); for (let x = 0; x < 5; x++) { document.getElementById("myList").appendChild(node.cloneNode(true)); }
<ul id="myList"> </ul>
That's because your code is appending the same node to your list. 那是因为您的代码会将相同的节点追加到列表中。 In order to create and append multiple nodes, you have to make sure that
为了创建和附加多个节点,您必须确保
let node = document.createElement("LI");
, let textnode = document.createTextNode("A node");
,
let textnode = document.createTextNode("A node");
, and node.appendChild(textnode);
,以及
node.appendChild(textnode);
are inside your for
loop. 在您的
for
循环内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.