javascript - 显示在另一个类中搜索的结果

标签 javascript

这段代码显示了通过javascript搜索列表的结果

<script>
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) {
        li[i].style.display = "";
    } else {
        li[i].style.display = "none";
    }
}

}

html代码是:

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

<ul id="myUL">
<li><a href="#">Adele</a></li>
<li><a href="#">Agnes</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> 

但我想要js代码搜索第一个li列表并保存它们,最后将结果显示到另一个地方(id= submenuItems),就像这个类一样:

<li>
    <div class="dropdownlink"><i class="fa fa-road" aria-hidden="true"></i>tittle
        <i class="fa fa-chevron-down" aria-hidden="true"></i>
    </div>
    <ul id="submenuItems">
        <li><a href="#">list1</a></li>
        <li><a href="#">list1</a></li>
    </ul>
</li>

最佳答案

JsFiddle: https://jsfiddle.net/txe1sp43/45/

HTML:

<input type="text" id="myInput" placeholder="Search for names...">

<ul class="myUL">
  <li><a href="#">Adele</a></li>
  <li><a href="#">Agnes</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> 

<ul class="myUL">
  <li><a href="#">Albert</a></li>
  <li><a href="#">Audrey</a></li>

  <li><a href="#">Beau</a></li>
  <li><a href="#">Bonny</a></li>

  <li><a href="#">Clyde</a></li>
  <li><a href="#">Christine</a></li>
  <li><a href="#">Chris</a></li>
</ul> 

<ul id="submenuItems"></ul>

和 JavaScript:

const input = document.getElementById("myInput");
const out = document.getElementById("submenuItems");

// Define event-listener for keyup event
input.onkeyup = () => {
    // Clear outputlist
  out.innerHTML = "";

  // Don't do anything if input field has been cleared
  if (input.value === "") return;

  // Declare variables
  const filter = input.value.toUpperCase();
  const ul = document.getElementsByClassName("myUL");
  const res = [];

  // Loop through all lists and look for matches to filter
  for (let j = 0; j < ul.length; j++) {
    const li = ul[j].getElementsByTagName('li');
    for (let i = 0; i < li.length; i++) {
      const a = li[i].getElementsByTagName("a")[0];
      // For each match, add a new li to output and insert a copy of the link to that
      if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
        const newLi = out.appendChild(document.createElement("li"));
        newLi.appendChild(a.cloneNode(true));  
      }
    }    
  }

};

关于javascript - 显示在另一个类中搜索的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51735511/

相关文章:

javascript - 如何创建一个 If 来检测变换 : translate3d style

javascript - 动态计数器随逗号上升

javascript - 缩放后如何应用 d3.js svg 裁剪

javascript - 我可以在不重新加载浏览器的情况下编辑 React 组件吗?

javascript - 表体中的滚动位置

javascript - 在 Html 中,为什么单击表单中的常规按钮会执行表单操作

javascript - chalice : Href and Src to Subfolder not working

javascript - 纯 Javascript 来检测 SPA DOM 就绪和页面更改

javascript - 如何将类 "current"添加到纯 CSS slider 点导航?

javascript - 将不带分隔符的字符串中的所有字符拆分为带有莲花音符的数组