将多个列表合并在一起并为搜索栏提供建议

我想将多个列表合并在一起,然后将它们作为输入字段的建议。我有一个针对一个列表的解决方案,但我无法让它与多个列表一起使用。我获取一个节点列表并将其转换为 HTMLUList 元素数组。我想我需要一个大的 HTMLUlist ?!感谢您的帮助,我希望您理解我的问题。


 let filter = this.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";

    }

  }

  // This works for one list "myUL"

  //-------------------------------------------------

  //This does not work 

  

  let filter = this.value.toUpperCase();

  ul = document.querySelectorAll (" #myUL , #myUL2 , #myUL3, #myUL4 , #myUL5 , #myUL6 ");

  var inputList = Array.prototype.slice.call(ul);

  li = inputList.getElementsByTagName('li'); 


桃花长相依
浏览 104回答 1
1回答

BIG阳

虽然你的方法对我来说似乎不太有效,但你可以通过循环 ul 元素来实现:let filter = this.value.toUpperCase();let uls = document.querySelectorAll('#myUL, #myUL2 ,#myUL3, #myUL4, #myUL5, #myUL6');uls.forEach(ul => {&nbsp; &nbsp;let li = ul.getElementsByTagName('li');&nbsp;&nbsp; &nbsp;// continue as above})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript