gpt4 book ai didi

javascript - removechild 循环在完成前退出

转载 作者:搜寻专家 更新时间:2023-11-01 04:45:39 26 4
gpt4 key购买 nike

我有下面的一段代码,它在文档中找到类名为 foo 的所有元素,然后将它们全部删除

        function(doc) {
var items = doc.getElementsByClassName('foo');
alert(items.length);
if(items.length>0) {
for(var i=0;i<items.length;i++) {
alert(i);
doc.body.removeChild(items[i]);
}
}

例如,items.length 为 3,函数在运行一个循环后退出,当长度为 8 时,它在 3 处退出。任何帮助将不胜感激。此外,当我一次又一次地运行该函数时,它最终会删除所有元素。

最佳答案

你的问题是 NodeListgetElementsByClassName() 返回是活的。要么按照 Felix 的建议首先将其转换为数组,要么向后迭代:

var items = doc.getElementsByClassName('foo');
var i = items.length;
while (i--) {
items[i].parentNode.removeChild(items[i]);
}

这是有效的,因为每次迭代从列表中删除的项目是列表中的最后一项,因此不会影响前面的项目。

我也改了doc.bodyitems[i].parentNode为了更通用,如果您需要处理不是 <body> 的直接子元素的元素元素。

关于javascript - removechild 循环在完成前退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com