Javascript 如何为网站设计搜索框?
我得到了一个网站自定义李过滤器,但我需要隐藏在初始阶段的所有李。我需要隐藏页面中的所有li,只显示搜索li。但问题是,当我试图隐藏li时,它也会在结果期间阻止所有liJavascript 如何为网站设计搜索框?,javascript,html,css,searchbar,Javascript,Html,Css,Searchbar,我得到了一个网站自定义李过滤器,但我需要隐藏在初始阶段的所有李。我需要隐藏页面中的所有li,只显示搜索li。但问题是,当我试图隐藏li时,它也会在结果期间阻止所有li 函数myFunction(){ var输入、滤波器、ul、li、a、i、TXT值; 输入=document.getElementById(“myInput”); filter=input.value.toUpperCase(); ul=document.getElementById(“myUL”); li=ul.getEleme
函数myFunction(){
var输入、滤波器、ul、li、a、i、TXT值;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName(“li”);
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
}
如果输入为空字符串,则可以隐藏所有li
元素,即“
”,并在用户输入时和首次加载JS时运行该函数
函数myFunction(){
var输入、滤波器、ul、li、a、i、TXT值;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName(“li”);
如果(input.value==“”){
[…li].forEach((liElement)=>{
liElement.style.display=“无”;
});
}否则{
对于(i=0;i-1){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
}
}
myFunction()代码>
我已经快速重构了您的代码,使其支持多个值,并保留带有链接的列表,以备您需要
这也只会创建与搜索词匹配的列表项
我不知道这对性能是否更好,但是向数组中添加元素比创建html元素来保存值更容易
函数myFunction(){
设ul=document.querySelector(“#myUL”)
ul.innerHTML='';
让inputVal=document.querySelector(“#myInput”).value;
如果(inputVal.length==0){
返回;
}
让可能值=['tree'、'bike'、'sea'、'mobile'];
让resSpan=document.querySelector('#res');
设resVal=[];
可能值。forEach(str=>{
if(str.includes(inputVal)){
resVal.push(str)
}
})
如果(resVal.length>0){
resVal.forEach(v=>{
让newLi=document.createElement('li');
设newAnc=document.createElement('a');
newAnc.innerText=v;
newLi.appendChild(newAnc);
ul.appendChild(newLi);
})
}
}
好的,下面是代码的工作版本。我知道这个问题已经得到了回答,但是这个版本支持多个li
s作为搜索结果出现:
(进行了2次更改-从li
s开始隐藏,然后在搜索栏为空时重新隐藏)
函数myFunction(){
var输入、滤波器、ul、li、a、i、TXT值;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
ul=document.getElementById(“myUL”);
li=ul.getElementsByTagName(“li”);
对于(i=0;i-1&&filter.length>0){
李[i].style.display=“”;
}否则{
li[i].style.display=“无”;
}
}
}
const input=document.getElementById(“myInput”);
const ul=document.getElementById(“myUL”);
const li=ul.getElementsByTagName(“li”);
对于(i of li)i.style.display=“无”;
函数myFunction(){
let filter,a,i,txtValue;
filter=input.value.toUpperCase();
如果(过滤器){
对于(i=0;i-1){
li[i].style.display=“block”;
}否则{
li[i].style.display=“无”;
}
}
}else for(i of li)i.style.display=“无”;
}
这不是OP想要的。如果搜索e
,然后删除搜索值,则不会清除结果。e
仅搜索单个mobile
其他结果如何…@decpk我已修复了使用class属性而不是使用其名称进行相同搜索筛选的任何方法。是的,为什么不。但是要弄清楚课堂上的情况<代码>类
应用于赋予多个元素,如果您想过滤它们,那么是的,您可以这样做。首先,选择所有元素,然后使用element.classList
property筛选具有该类的元素。请您用工作代码向我解释一下好吗?当然可以,如果您可以在SOF中问这个问题,而不是在注释中问,那不是更好吗。