2017-10-09 84 views
1

一個值時,下面的代碼刪除某個元件的所有子,除了這些所述saved可變內列出。的appendChild()失敗嘗試追加存儲在數組中

let rightCol = document.querySelector("#rightCol"); 
let saved = rightCol.querySelectorAll('._4-u2._3-96._4-u8'); 
let savedArr = []; 

saved.forEach(()=>{ 
    savedArr.push(saved); 
}); 

rightCol.innerHTML = ''; // Delete all children before retrieving "saved" ones. 

for (var i = 0; i < savedArr.length; i++) { 
    rightCol.appendChild(savedArr[i]); 
}; 

代碼失敗,此錯誤:

TypeError: Argument 1 of Node.appendChild does not implement interface Node.

爲什麼代碼失敗?

回答

1

你給出的代碼有2個錯誤:

  • querySelectorAll應該對文件執行。
  • 你正在推動在每個循環整個數組。

這裏的工作副本

let rightCol = document.querySelector("#rightCol"); 
let saved = document.querySelectorAll('._4-u2._3-96._4-u8'); 
let savedArr = []; 

saved.forEach((s)=> { 
    savedArr.push(s); 
}); 

rightCol.innerHTML = ''; // Delete all children before retrieving "saved" ones. 

for (var i = 0; i < savedArr.length; i++) { 
    rightCol.appendChild(savedArr[i]); 
}; 
0

你推你收集陣列的每個元素在您的選擇,而不是返回到下一行的元素

如果你的代碼。每個國家(()=>的,推的說法應該是this

0

forEach要添加的整個saved陣列savedArr每次迭代。而應該添加使用傳入forEach回調參數的每個項目。

saved.forEach((s)=> { 
    savedArr.push(s); 
}); 

不知道爲什麼你要複製的陣列轉移到另一個陣列這裏雖然..