javascript - 如何为网站设计搜索框?

标签 javascript html css searchbar

我有一个网站的自定义李过滤器,但我需要在初始阶段隐藏所有李。我需要隐藏页面中的所有li并仅显示搜索li。但问题是,当我尝试隐藏 li 时,它也会在结果期间阻止所有 li。

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";
        }
    }
}
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search...">

<ul id="myUL">
  <li><a href="#">tree</a></li>
  <li><a href="#">bike</a></li>
  <li><a href="#">sea</a></li>
  <li><a href="#">mobile</a></li>
</ul>

最佳答案

如果输入是空字符串,即 "",您可以隐藏所有 li 元素,并在用户输入输入时以及第一次输入时运行该函数。 JS 加载。

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");

  if (input.value === "") {
    [...li].forEach((liElement) => {
      liElement.style.display = "none";
    });
  } else {
    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";
      }
    }
  }
}

myFunction();
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search...">

<ul id="myUL">
  <li><a href="#">tree</a></li>
  <li><a href="#">bike</a></li>
  <li><a href="#">sea</a></li>
  <li><a href="#">mobile</a></li>
</ul>

关于javascript - 如何为网站设计搜索框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67762009/

相关文章:

css - 是否可以仅使用 CSS(无 JavaScript 代码)来隐藏和显示文本?

html - 如果 anchor 没有 href 属性,则保留 anchor 样式

javascript - 使用 RxJS 在另一个序列之后运行一个序列

javascript - 根据 body id 向元素添加类

jquery - 在页面加载前将 div 替换为 loading.gif,等待 3 秒,删除加载 gif 并显示 div

html - Chrome : border-radius on image with padding and background

css - 超过所需大小的链接

javascript - 主干 View 在没有指定预定义 el 的情况下不呈现

javascript - 如何在第二次单击时再次调整大小并且同时不超过一个 "open"

javascript - 在 Highcharts 中结合预处理数据和下钻