Javascript Can';是否将子元素附加到数组中的每个DOM元素?

Javascript Can';是否将子元素附加到数组中的每个DOM元素?,javascript,html,css,Javascript,Html,Css,嘿,朋友们,我有一个元素数组。我想给每个元素添加一个子跨度元素。我用了一个for循环 for(let i = 0; i < slots.length; i++) { //add class to each div slots[i].classList.add('c' + i); //add the slot to each div slots[i].appendChild(slot); //add the function with the game

嘿,朋友们,我有一个元素数组。我想给每个元素添加一个子跨度元素。我用了一个for循环

for(let i = 0; i < slots.length; i++) {
    //add class to each div
    slots[i].classList.add('c' + i);
    //add the slot to each div
    slots[i].appendChild(slot);
    //add the function with the game logic to each slot
    slots[i].addEventListener('click', runGame); 
}

您需要克隆
插槽
元素,否则它只会从一个父元素移动到下一个父元素

所以我添加了
cloneNode()
,为每个位置创建一个新的克隆

//获取电路板上的所有插槽位置
const slots=document.queryselectoral('.board div');
让player='p1';
让董事会=[
0, 1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41,
]
让slot=document.createElement('span');
//为每个插槽分配一个类以表示其位置
for(设i=0;i
let slot=document.createElement('span');

用于解决问题的for循环中的行


请参阅本文以进一步了解DOM中appendChild的行为。

如何定义
let slot=document.createElement('span')呢在循环内部?每个循环都会创建一个新元素并附加它。是的,你也可以这样做。我不确定哪种方法会更快。除非有大量的
slot
设置,否则
cloneNode
可能比一遍又一遍地重新创建它更快。为什么这会改变任何事情?slot作为一个全局变量存在我不应该在每次迭代中都创建一个新的元素?@Alfred,因为
appendChild
不会复制元素,它会移动一个元素,因此,每个循环都会将元素移动到下一个父元素,最后循环结束后,你会在最后一个父元素中找到它。这就是为什么你需要
克隆它或创建一个新的