简体   繁体   English

使用JavaScript多次追加节点只能追加一次

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM