【发布时间】:2017-09-16 01:21:34
【问题描述】:
我正在尝试编写一个搜索/过滤函数,该函数根据用户输入的内容搜索具有 data-* 属性的无序列表项。
<input type="text" placeholder="Search..." id="myInput" onkeyup="myFunction()">
<ul id="myUL">
<li><a href="#" data-keywords="photography">Digital Media Design</a></li>
<li><a href="#" data-keywords="computers">Information Technology</a></li>
<li><a href="#" data-keywords="coding">Programming</a></li>
</ul>
这是我目前仅适用于一个数据关键字项的代码。我需要帮助才能根据多个关键字显示搜索结果。
<li><a href="#" data-keywords="photography photoshop illustrator premiere">Digital Media Design</a></li>
// Search functionality
function myFunction() {
// Declare variables
var input, filter, ul, li, a, i;
input = document.getElementById('myInput');
filter = input.value.toUpperCase();
ul = document.getElementById("myUL");
li = ul.getElementsByTagName('li');
// Loop through all list items, and hide those who don't match the search query
for (i = 0; i < li.length; i++) {
a = li[i].getElementsByTagName("a")[0];
if (a.innerHTML.toUpperCase().indexOf(filter) > -1 || $(a).data("keywords") === filter.toLocaleLowerCase()) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
如果有人对我如何改进代码有任何建议,那就太棒了!
【问题讨论】:
-
允许用户在框中输入多少字,一个还是多个?如果是多个,它们都必须匹配吗?如果用户搜索
photography media,是否应该与您在上面给出的示例节点匹配,其中一个搜索词匹配data-keywords,另一个搜索词匹配内容? -
另外,搜索
hot应该匹配photography吗?
标签: javascript jquery web