循环浏览html并删除未找到

时间:2017-08-09 18:14:03

标签: javascript

所以,我循环遍历文档正文,搜索所有“#result> tbody> tr”对象。然后我尝试在这些元素中搜索以查看是否存在任何名称,如果存在,我想删除它们。如果我不遍历名称并使用单个对象,我就能使用它。如果我尝试遍历名称,它只循环四次,然后没有其他事情发生。

有什么想法吗?

编辑:目前第一个循环循环有30个对象。当我将第二个循环添加到混合中以查看子对象是否存在时,它将仅循环遍历四个而不是中断循环。希望能更好地解释。

示例:https://jsfiddle.net/8c9p7bp5/1/

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]);
        }

    }
}

2 个答案:

答案 0 :(得分:0)

您的代码的第一个错误是您对嵌套循环使用了相同的限制&#34; len&#34;,在第一次迭代中,该值变为4,这就是为什么它会破坏父循环。

答案 1 :(得分:-1)

您初始化j但从未在内循环中使用它。

请改为尝试:

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

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