有没有任何程序化的方法,我可以删除列表项的类

时间:2017-06-27 07:41:43

标签: javascript

我正在做一个循环,我在其中匹配某个值并将class="hidden"分配给列表。但是当我再次运行循环时,我希望我的所有列表都应该没有类,所以我可以分配其他值。

这是我的代码。

for (i = list.children.length; i--;) {
            li = list.children[i];
            match = li.textContent.toLowerCase().indexOf(value.toLowerCase()) > -1;
            li.classList.toggle('hidden', !match)
        }

但是在我运行这个循环之前,我希望所有列表都没有任何类,所以我要删除列表{i} {/ 1>

Class="hidden"

任何人都可以帮助我实现这个目标

2 个答案:

答案 0 :(得分:2)

您想在现有循环之前执行此操作吗?试试这个:

var list = document.getElementById("list");
for (i = list.children.length; i--;) {
  li = list.children[i];
  li.classList.remove("hidden");
}
<ul id="list">
  <li class="hidden">foo</li>
  <li>bar</li>
  <li class="hidden">baz</li>
</ul>

虽然看起来你可以在现有循环的开头做到这一点。在那之前不需要另一个循环。

答案 1 :(得分:1)

为什么不使用Element.classList.contains(), ..remove(), ..add()的组合等MDN page上的大量信息。

例如:

for(i=list.children.length; i--;) {
    li = list.children[i];
    if (li.textContent.toLowerCase().indexOf(value.toLowerCase()) > -1) {
        li.classList.add('hidden');
        // or is it li.classList.remove('hidden'); here?
    }
}

即使元素已经有了类,..add()也是安全的。该课程不会被添加两次。