Javascript 我怎样才能用forEach()完成它?
我已经用搜索栏做了一些工作,它正在工作。现在我想用Javascript 我怎样才能用forEach()完成它?,javascript,arrays,Javascript,Arrays,我已经用搜索栏做了一些工作,它正在工作。现在我想用forEach()或filter()来完成它,而不是用纯Javascript来完成for循环。这是我的HTML和JS代码。有人能帮我吗 函数myFunction(){ 让输入=document.getElementById('mySearch'); 让bind=input.value.toUpperCase(); 设ul=document.getElementById('myMenu'); 设li=ul.getElementsByTagName
forEach()
或filter()
来完成它,而不是用纯Javascript来完成for循环。这是我的HTML和JS代码。有人能帮我吗
函数myFunction(){
让输入=document.getElementById('mySearch');
让bind=input.value.toUpperCase();
设ul=document.getElementById('myMenu');
设li=ul.getElementsByTagName('li');
for(设i=0;i-1){
li[i].style.display=''
}否则{
li[i].style.display='none';
}
}
}
-
-
-
-
-
-
-
-
-
将li
s的集合转换为数组,或使用querySelectorAll
,它返回一个NodeList
,在较新的浏览器中具有forEach
方法:
函数myFunction(){
让输入=document.getElementById('mySearch');
让bind=input.value.toUpperCase();
document.queryselectoral('#myMenu>li').forEach((li)=>{
if(li.textContent.includes(bind))li.style.display=''
else li.style.display='none';
});
}
-
-
-
-
-
-
-
-
-
这里没有理由使用过滤器,因为您不想创建数组,也没有理由使用forEach
。如果您试图简化代码,请使用for…of
循环隐藏/显示以下项目:
function myFunction() {
const input = document.getElementById('mySearch').value.toUpperCase();
const items = document.getElementById('myMenu').getElementsByTagName('li');
for (const li of items) {
let a = li.getElementsByTagName('a')[0];
li.style.display = a.innerHTML.toUpperCase().includes(input) ? '' : 'none';
}
}
您是如何尝试的?我可以用filter()方法吗?我可以用filter()方法吗?这是不明智的,因为filter
将只返回匹配的元素,而您需要更改所有元素的样式,而不仅仅是匹配的元素。(除非您浏览列表两次,一次隐藏所有内容,然后在.filter
之后浏览一次以显示匹配的内容)