问题是我想以首字母优先的格式过滤列表中的单词。
正如你现在看到的,我在我的搜索字段中输入字母“a”,结果是所有与“a”相关的单词。2但是我只想要“a”开头的单词。
然后我输入“an”,结果应该是“an”开头的单词。
function myFunction() {
var input, filter, ul, li, a, i, txtValue;
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];
txtValue = a.textContent || a.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h2>My Phonebook</h2>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
<ul id="myUL">
<li><a href="#">Adele</a></li>
<li><a href="#">Agnes</a></li>
<li><a href="#">Agitha</a></li>
<li><a href="#">Billy</a></li>
<li><a href="#">Bob</a></li>
<li><a href="#">Calvin</a></li>
<li><a href="#">Christina</a></li>
<li><a href="#">Cindy</a></li>
</ul>
</body>
</html>
6条答案
按热度按时间nr9pn0ug1#
此
if (txtValue.toUpperCase().indexOf(filter) > -1)
应更改为x一个一个一个一个x一个一个二个x
f45qwnt82#
您可以使用
startsWith()
函数来获得结果。qkf9rpyu3#
您可以改用
startsWith
。yeotifhr4#
您应该使用
startsWith()
而不是indexOf()
在JS中替换
if (txtValue.toUpperCase().indexOf(filter) > -1)
带有
if (txtValue.toUpperCase().startsWith(filter))
阅读更多关于String.prototype.startsWith()
1cklez4t5#
qc6wkl3g6#