0

如果它的 innerHTML 包含某个字符串,我正在尝试删除任何元素。

我有这个代码:

 elemItem = document.getElementsByClassName("item");
 elemItemPrice = document.getElementsByClassName("price");
    for (i = 0; i < elemItem.length; i++) {
        if (elemItemPrice[i].innerHTML.trim().indexOf("Sold") != -1){
            elemItem[i].parentNode.removeChild(elemItem[i])
        }
    }

这是HTML:

<div class="item">
<span class="price">Sold</span>
</div>
<div class="item">
<span class="price">Sold</span>
</div>
<div class="item">
<span class="price">$4.99</span>
</div>

对我来说,它只删除了 1 个已售出的 div 标签。

4

2 回答 2

4

The problem is, when you remove an item, you change the collection's indexing (ie, the item at i=1 moves to 0). To correct this, iterate backwards:

for (i = elemItem.length-1; i >= 0 ; i--) {
于 2013-07-14T22:03:42.980 回答
0

您应该能够使用数组的过滤方法,如这个 SO 问题所示:array.select() in javascript

于 2013-07-14T22:47:58.627 回答