我有以下代码,问题是当我搜索“Billy”时,我得到了所有三个"Billy",这是我所期望的。
然而,当我搜索"Bob“时,我只能得到两个父级"Bob”。为什么搜索循环只在每一层中搜索Bill而不是Bob?
现在,现在只有一个子列表,这将增加到许多。我想要的是在所有级别执行搜索
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
function myFunction() {
var input, filter, ul, li, a, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
ul = document.getElementById("myUL");
li = ul.getElementsByTagName("li");
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
<ul id="myUL">
<li><a href="#">Billy</a></li>
<li><a href="#">Bob</a></li>
<li>
<ul>
<li><a href="#">Billy</a></li>
<li><a href="#">Bob</a></li>
</ul>
</li>
<li><a href="#">Billy</a></li>
<li><a href="#">Bob</a></li>
</ul>
https://stackoverflow.com/questions/51430792
复制相似问题