我有一個回圈來復制一個陣列,另一個回圈在另一個 div 中添加副本。兩個回圈都運行良好但原始元素被洗掉,有人可以解釋我為什么嗎?我該如何解決?謝謝!
<div class="parent_element" style="background-color: red;">
<div class="element">text</div>
<div class="element">text</div>
<div class="element">text</div>
</div>
<div class="parent_copy" style="background-color: green;"></div>
var mesElements = document.querySelectorAll('.element');
var catchCopy = document.querySelector('.parent_copy');
var mesElementsCopie = []
for(var j = 0; j < mesElements.length; j){
mesElementsCopie[j] = mesElements[j];
}
for(var k = 0; k < mesElements.length; k){
catchCopy.appendChild(mesElementsCopie[k]);
}
uj5u.com熱心網友回復:
在這一行,您不復制節點,而是創建對同一個 DOM 節點的兩個參考:
mesElementsCopie[j] = mesElements[j];
您應該使用cloneNode()方法:
mesElementsCopie[j] = mesElements[j].cloneNode(true);
uj5u.com熱心網友回復:
這是固定代碼:
var mesElements = document.querySelectorAll('.element');
var catchCopy = document.querySelector('.parent_copy');
var mesElementsCopie = []
for(var j = 0; j < mesElements.length; j){
mesElementsCopie[j] = mesElements[j].cloneNode(true);
}
for(var k = 0; k < mesElements.length; k){
catchCopy.appendChild(mesElementsCopie[k]);
}
<div class="parent_element" style="background-color: red;">
<div class="element">text</div>
<div class="element">text</div>
<div class="element">text</div>
</div>
<div class="parent_copy" style="background-color: green;"></div>
您正在添加從父元素中獲取的相同元素,因此它只是將它們移動到父副本。用于.cloneNode(true)確保您沒有使用相同的元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315438.html
標籤:javascript 数组 循环 复制 附子
