Discuss / JavaScript / 最简单的方法,但是这里过不了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!没毛病老铁

最简单的方法,但是这里过不了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!没毛病老铁

Topic source

木知吖2333

#1 Created at ... [Delete] [Delete and Lock User]

var list = document.getElementById('list');

      list.removeChild(list.children[1]);

      list.removeChild(list.children[2]);

      list.removeChild(list.children[3]);

删除之后,child索引已经变了

这个只能跑一次,跑过了就刷新再跑。

WENXX0909

#4 Created at ... [Delete] [Delete and Lock User]

注意到删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置。

当你遍历一个父节点的子节点并进行删除操作时,要注意,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属性时刻都在变化。

繁解ffffj

#5 Created at ... [Delete] [Delete and Lock User]

最好的办法,从后面开始删


  • 1

Reply