Discuss
/
JavaScript
/
最简单的方法,但是这里过不了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!没毛病老铁
最简单的方法,但是这里过不了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!没毛病老铁
Topic source注意到删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置。
当你遍历一个父节点的子节点并进行删除操作时,要注意,children
属性是一个只读属性,并且它在子节点变化时会实时更新。
例如,对于如下HTML结构:
<div id="parent">
<p>First</p>
<p>Second</p>
</div>
当我们用如下代码删除子节点时:
var parent = document.getElementById('parent');
parent.removeChild(parent.children[0]);
parent.removeChild(parent.children[1]); // <-- 浏览器报错
浏览器报错:parent.children[1]
不是一个有效的节点。原因就在于,当<p>First</p>
节点被删除后,parent.children
的节点数量已经从2变为了1,索引[1]
已经不存在了。
因此,删除多个节点时,要注意children
属性时刻都在变化。
- 1
木知吖2333
var list = document.getElementById('list');
list.removeChild(list.children[1]);
list.removeChild(list.children[2]);
list.removeChild(list.children[3]);