我正在做一个循环,我在其中匹配某个值并将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"
任何人都可以帮助我实现这个目标
答案 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()
也是安全的。该课程不会被添加两次。