Javascript 在html中循环并删除未找到的内容

Javascript 在html中循环并删除未找到的内容,javascript,Javascript,因此,我在文档体中循环搜索所有“#result>tbody>tr”对象。然后我尝试在这些元素中搜索,看看是否存在任何名称,如果存在,我想删除它们。如果我不循环遍历名称并使用单个对象,它就可以工作了。如果我试着循环这些名字,它只循环四次,然后就什么也没发生 有什么想法吗 编辑:当前第一个循环通过30个对象。当我将第二个循环添加到混合中以查看子对象是否存在时,它将只循环四次,然后中断循环。希望这能更好地解释 例如: var dlList=document.queryselectoral(#resul

因此,我在文档体中循环搜索所有“#result>tbody>tr”对象。然后我尝试在这些元素中搜索,看看是否存在任何名称,如果存在,我想删除它们。如果我不循环遍历名称并使用单个对象,它就可以工作了。如果我试着循环这些名字,它只循环四次,然后就什么也没发生

有什么想法吗

编辑:当前第一个循环通过30个对象。当我将第二个循环添加到混合中以查看子对象是否存在时,它将只循环四次,然后中断循环。希望这能更好地解释

例如:

var dlList=document.queryselectoral(#result>tbody>tr”);
对于(变量i=0,len=dlList.length;ibr>img[title^=”+“names[i]+“]”);
如果(!dlList[i].包含(vi)){
//dlList[i].remove();
console.log(dlList[i]);
}
}
}

您可以初始化
j
,但绝不在内部循环中使用它

请尝试以下方法:

var vi=dlList[i].querySelector(“td>br>img[title^=”“+names[j]+“]”)


此外,对于内部循环,您应该使用不同于
len
的变量,以避免遇到变量范围问题。

您的代码的第一个错误是,您对嵌套循环“len”使用了相同的限制,在第一次迭代中,该值变为4,这就是它将中断父循环的原因。

我认为您只需要将
names[I]
更改为
names[j]
Oops,我确实忽略了这一点,但这并没有解决我的问题。dlList有30个对象,但它仍然只会循环通过前四个对象,然后中断。你能举一个最小的可验证示例吗?就像在JSFIDLE上一样?向OPL添加了一个示例,我没有时间去弄清楚真正的问题是什么,但它只迭代了4次的原因是因为您正在将
len
重新定义为
names.length
,即4。将您的第二个
len
更改为其他内容,您将看到所有元素都被删除。应该是注释,这就是为什么我将此确切答案设置为注释:)不,这是问题的答案,因此应该作为答案发布。这里讨论了两者之间的区别:你的证据在哪里?这是一个
答案
?国际海事组织,没有足够的信息来回答。你刚才用了我的评论,并且做了一个。我们的想法是让OP在评论中尝试一下,看看它是否是答案。谢谢你投我的反对票。我们都在8分钟前回答了——直到你指出,我才看到你的评论。时间戳显示我们的评论间隔为27秒。否决票应该是对无益和错误的答案的,而不是因为你们的自尊心受到了伤害,或者其他任何你们认为合理的理由。(顺便说一句,我没有投反对票)。但我仍然不认为这是答案,因为我们没有足够的信息,也没有任何方法来验证(OP应该包含一个最小的、可验证的示例)。无论如何,祝你好运。对不起,它不会打破循环,但是你的代码有上面提到的错误
var dlList = document.querySelectorAll("#result>tbody>tr");
for (var i = 0, len = dlList.length; i < len; i++) {

    var names = ['Test', 'Router', 'IP', 'Mod'];

    for (var j = 0, len = names.length; j < len; j++) {
        var vi = dlList[i].querySelector("td>br>img[title^='" + names[i] + "']");

        if(!dlList[i].contains(vi)) {
            //dlList[i].remove();
            console.log(dlList[i]);
        }

    }
}