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

Javascript 将多个列表合并在一起,并为搜索栏提供建议,javascript,Javascript,我想将几个列表合并在一起,然后将它们作为输入字段的建议。 我有一个列表的解决方案,但我不能让它与几个列表一起工作。 我得到一个节点列表,并将其转换为一个HtmlList元素数组。我想我需要一个大名单?! 谢谢你的帮助,我希望你能理解我的问题 let filter = this.value.toUpperCase(); ul = document.getElementById("myUL"); li = ul.getElementsByTagName('li');

我想将几个列表合并在一起,然后将它们作为输入字段的建议。 我有一个列表的解决方案,但我不能让它与几个列表一起工作。 我得到一个节点列表,并将其转换为一个HtmlList元素数组。我想我需要一个大名单?! 谢谢你的帮助,我希望你能理解我的问题

 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'); 
let filter=this.value.toUpperCase();
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName('li');
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
//这适用于一个列表“myUL”
//-------------------------------------------------
//这行不通
让filter=this.value.toUpperCase();
ul=document.queryselectoral(“myUL,#myUL2,#myUL3,#myUL4,#myUL5,#myUL6”);
var-inputList=Array.prototype.slice.call(ul);
li=inputList.getElementsByTagName('li');

虽然您的方法对我来说似乎不是很有效,但您可以通过ul元素循环来实现:

let filter=this.value.toUpperCase();
设uls=document.queryselectoral('myUL,#myUL2,#myUL3,#myUL4,#myUL5,#myUL6');
uls.forEach(ul=>{
设li=ul.getElementsByTagName('li');
//继续如上所述

})
um,你能举一个输入和预期输出的例子吗。。因为我不完全理解你的解释举例来说,你所说的“合并列表”是什么意思?对于“建议”,你可以更改html元素的
占位符
方面,这样它会显示一个什么的阴影。在第二个示例中,我有一个html列表,这就是它抛出错误的原因“Uncaught TypeError:inputList.getElementsByTagName不是函数”。我需要从数组中创建一个大的HtmlList?!我如何实现这一点?如果我这样写它“li=inputList[0]。getElementsByTagName('li');“但同样,它只需要6个列表中的一个。QuerySelector all给了我一个大的HTML集合,我想。但是如果我做对了,我需要一个大的HTML列表。谢谢!我已经认为我必须以某种方式循环它。不过,你认为什么更有效?