javascript - 使下拉菜单仅在调用函数时可见

标签 javascript html css

我试图仅在搜索栏中输入某些内容时才使下拉列表可见。否则它会保持折叠状态。以下是我的代码

function mysearchFunction() {
  var input, upperCase, ul, li, x, i, ax;
  input = document.getElementById("mysearchInput");
  upperCase = input.value.toUpperCase();
  ul = document.getElementById("myList");
  li = ul.getElementsByTagName("li");
  for (i = 0; i < li.length; i++) {
    x = li[i].getElementsByTagName("a")[0];
    if (x.innerHTML.toUpperCase().indexOf(upperCase) === 0) {
      li[i].style.visibility = "visible";
      li[i].style.display = "block";
    } else {
      li[i].style.display = "none";
    }
  }
}
#myList li a {
  border: 1px solid #ddd;
  margin-top: -2px;
  background-color: #f6f6f6;
  padding: 10px;
  text-decoration: none;
  font-size: 16px;
  color: black;
  display: block;
  visibility: collapse;
}
<input type="text" id="mysearchInput" onkeyup="mysearchFunction()" placeholder="Search..">
<ul id="myList">
  <li><a href="#">America</a></li>
  <li><a href="#">Africa</a></li>
  <li><a href="#">Antartica</a></li>
  <li><a href="#">Asia</a></li>
  <li><a href="#">Europe</a></li>
  <li><a href="#">Australia</a></li>
</ul>

在 JS 中,我试图仅使需要显示的内容可见。请指导我哪里出错了。当前没有显示任何内容。它一直处于崩溃状态。

最佳答案

刚刚更新了 css 选择器:#myList li,您隐藏了所有链接。

function mysearchFunction() {
  var input, upperCase, ul, li, x, i, ax;
  input = document.getElementById("mysearchInput");
  upperCase = input.value.toUpperCase();
  //console.log(upperCase);
  ul = document.getElementById("myList");
  li = ul.getElementsByTagName("li");
  for (i = 0; i < li.length; i++) {
    x = li[i].getElementsByTagName("a")[0];
    if (x.innerHTML.toUpperCase().indexOf(upperCase) == 0 && upperCase !== '') {
      li[i].style.visibility = "visible";
      li[i].style.display = "block";
    } else {
      li[i].style.display = "none";
    }
  }
}
#myList li {
  border: 1px solid #ddd;
  margin-top: -2px;
  background-color: #f6f6f6;
  padding: 10px;
  text-decoration: none;
  font-size: 16px;
  color: black;
  display: block;
  visibility: collapse;
}
<input type="text" id="mysearchInput" onkeyup="mysearchFunction()" placeholder="Search..">
<ul id="myList">
  <li><a href="#">America</a></li>
  <li><a href="#">Africa</a></li>
  <li><a href="#">Antartica</a></li>
  <li><a href="#">Asia</a></li>
  <li><a href="#">Europe</a></li>
  <li><a href="#">Australia</a></li>
</ul>

关于javascript - 使下拉菜单仅在调用函数时可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166368/

相关文章:

html - 等高元素,在 flexbox 容器内底部对齐,纯 CSS

javascript - Bootstrap、CSS、JS - 单击后 Bootstrap 文件菜单栏悬停

php - 解析word文档的脚本

html - HTML/CSS 文本下的行

php - preg_replace all img tags with else 东西

html - 如何在页面加载事件中向页面的 css 添加属性

html - 防止子div继承父宽度

javascript - 无法使用请求读取python Rest中的axios数据

javascript - 正则表达式替换所有上标数字

javascript - 使用 Javascript 提交表单