尝试追加存储在数组

时间:2017-10-09 03:39:24

标签: javascript

以下代码删除了某个元素的所有子元素,除了saved变量中列出的元素之外。

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:Node.appendChild的参数1没有实现接口节点。

为什么代码失败?

3 个答案:

答案 0 :(得分: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]);
};

答案 1 :(得分:0)

您正在为选择返回中的每个元素推送集合数组,而不是元素

如果您的代码在下一行显示.each(()=&gt;,则推送的参数应为this

答案 2 :(得分:0)

forEach的每次迭代中,您将整个saved数组添加到savedArr。您应该使用传递给forEach回调的参数来添加每个项目。

e.g。

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

不知道为什么你要将数组复制到另一个数组,但是这里..