javascript - 让 JavaScript 函数显示结果而不是隐藏结果
问题描述
因此,我通过 W3Schools 找到了此代码,并将其更改为我喜欢的学校项目。目前,它是一个下拉列表,当输入时会删除拼写不同的结果。我想要做的是反转这个,它们都开始隐藏,当输入结果时,它会显示,非常感谢!
function searchFunction() {
// Declare variables
var input, filter, ul, li, a, i;
input = document.getElementById("illnessSearch");
filter = input.value.toUpperCase();
ul = document.getElementById("illnessList");
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) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
// Via: https://www.w3schools.com/howto/howto_js_search_menu.asp
}
#illnessSearch {
width: 50%;
font-size: 20px;
padding: 20px;
font-family: Tahoma, sans-serif;
border: 1px solid #ddd;
}
#illnessList {
list-style-type: none;
padding: 0;
margin: 0;
}
#illnessList li a {
width: 50%;
padding: 20px;
font-family: Tahoma, sans-serif;
font-weight: bold;
text-decoration: none;
color: black;
display: block
}
#illnessList li a:hover {
background-color: #666666;
}
<div>
<br class="a">
<center>
<input type="text" id="illnessSearch" onkeyup="searchFunction()" placeholder="🔍 | Illness
name...">
<ul id="illnessList" class="dropdown-content">
<li><a href="coronavirus.php">CORONAVIRUS</a></li>
<li><a href="hay-fever.php">HAY FEVER</a></li>
<li><a href="influenza-adult.php">INFLUENZA (ADULT)</a></li>
<li><a href="influenza-child.php">INFLUENZA (CHILD)</a></li>
<li><a href="lyme-disease.php">LYME DISEASE</a></li>
</ul>
</center>
</div>
解决方案
您基本上拥有它,您需要做的就是默认隐藏元素。因为您的 JavaScript 引用了li
,所以我必须添加一个样式以li
默认隐藏它。一旦用户开始输入,它就会显示出来。我还添加了一个检查以在文本框为空时隐藏所有结果。
function searchFunction() {
// Declare variables
var empty = false;
var input, filter, ul, li, a, i;
input = document.getElementById("illnessSearch");
if(input.value.length < 1){
empty = true;
}
filter = input.value.toUpperCase();
ul = document.getElementById("illnessList");
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 && !empty) {
li[i].style.display = "block";
} else {
li[i].style.display = "none";
}
}
// Via: https://www.w3schools.com/howto/howto_js_search_menu.asp
}
#illnessSearch {
width: 50%;
font-size: 20px;
padding: 20px;
font-family: Tahoma, sans-serif;
border: 1px solid #ddd;
}
#illnessList {
list-style-type: none;
padding: 0;
margin: 0;
}
#illnessList li {
display: none;
}
#illnessList li a {
width: 50%;
padding: 20px;
font-family: Tahoma, sans-serif;
font-weight: bold;
text-decoration: none;
color: black;
display: block;
}
#illnessList li a:hover {
background-color: #666666;
}
<div>
<br class="a">
<center>
<input type="text" id="illnessSearch" onkeyup="searchFunction()" placeholder="🔍 | Illness
name...">
<ul id="illnessList" class="dropdown-content">
<li><a href="coronavirus.php">CORONAVIRUS</a></li>
<li><a href="hay-fever.php">HAY FEVER</a></li>
<li><a href="influenza-adult.php">INFLUENZA (ADULT)</a></li>
<li><a href="influenza-child.php">INFLUENZA (CHILD)</a></li>
<li><a href="lyme-disease.php">LYME DISEASE</a></li>
</ul>
</center>
</div>
推荐阅读
- c# - '有效载荷数据类型 MSG_TYPE 的集合类型不存在。'
- php - Jquery + Ajax 不能正常工作,为什么?
- r - R闪亮的应用程序错误:gsub函数中用于花括号的意外字符串常量
- python - Google REST API 支持团队驱动器无法正常工作
- python - Python-STL 文件缩减
- postgresql - PostgreSQL 是否正确了解夏令时?
- windows - 如何使用 AutiIt 模拟使用 AutoIt for IME 而非英语的击键
- python - 在适当的二叉树中将内部节点与外部节点相关联
- c# - ASP.NET Web API 在通过 xamarin 移动应用程序访问时返回内部服务器 500 错误。?
- c# - 如何在 WPF 中模拟击键,但在应用程序之外?