以下代码删除了某个元素的所有子元素,除了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没有实现接口节点。
为什么代码失败?
答案 0 :(得分:1)
您提供的代码有2个错误:
这是工作副本
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);
});
不知道为什么你要将数组复制到另一个数组,但是这里..