Javascript 函数中变量的分组.第2部分
我昨天问了一个关于的问题,我得到了答案,但它只解决了我一半的问题: 我希望能够在javascript中对变量进行分组,这样我就可以选择一组要显示的div和一组要隐藏的div。根据上一个问题,我现在有:Javascript 函数中变量的分组.第2部分,javascript,Javascript,我昨天问了一个关于的问题,我得到了答案,但它只解决了我一半的问题: 我希望能够在javascript中对变量进行分组,这样我就可以选择一组要显示的div和一组要隐藏的div。根据上一个问题,我现在有: var-elemsById=['myDIVA'、'myDIVB'、'myDIVC'].map(id=>[id,document.getElementById(id)]; 函数showthisandderest(showId){ forEach(函数([id,el]){ el.style.disp
var-elemsById=['myDIVA'、'myDIVB'、'myDIVC'].map(id=>[id,document.getElementById(id)];
函数showthisandderest(showId){
forEach(函数([id,el]){
el.style.display=id==showId?'block':'none';
});
}
blabla 1
布拉布拉2
布拉布拉3
显示新版本
假设showId是一个数组
function showThisAndHideRest(showId){
elemsById.forEach(function([id,el]){
el.style.display=showId.includes(id)?'block':'none';
});
}
如果id在数组中,则Array.includes返回true
你现在应该能做到了
showThisAndHideRest(["elem1","elem2"])
如果您不介意稍微重构一下代码:
//查找类为“list item”的所有元素
//并将结果转换为数组
const divs=[…document.querySelectorAll('.list项');
函数显示索引(索引){
//环游地球
divs.forEach((div,index)=>{
//如果数组包含的索引为
if(index.indexOf(index)!=-1){
//使可见
div.classList.add('visible');
}否则{
//隐藏
div.classList.remove('visible');
}
});
}
const select=document.querySelector('select');//元素
select.addEventListener('change',function(){
//只要元素的值发生变化,就会执行此函数
if(this.selectedIndex==0){
//用户选择了第一个
showIndex([0,4,5]);//显示A,E,F
}else if(this.selectedIndex==1){
//用户选择了第二个
showIndex([1,2,3,8]);//show B,C,D,I
}
});代码>
。列表项{
显示:无;
}
.list-item.visible{
显示:块;
}
A
B
C
D
E
F
G
H
我
选择要显示的div:
A、 E,F
B、 C,D,I
你能给我们展示一下团队的样子吗?@PeterMader谢谢你澄清了我的问题。我希望能够显示myDIVA和myDIVB并隐藏myDIVC。但对于我的“真实”项目,我希望能够添加Function saying;只显示(例如)div的A、E、F、M、P和隐藏其余的40+像一个符咒一样工作:-)我可以看出这是多么聪明,但目前我对@Daniel Vestøl提供的解决方案感到非常高兴。在此之前,我有一个分组函数,每个div都有一条线,需要被阻塞或隐藏,这完全是不成比例的。现在我可以在不改变html中任何内容的情况下创建所需的组,而这正是我的目标。如果我能完全重建,我会再看看你的解决方案。谢谢:-)当你厌倦了写myDIVA
,myDIVB
,myDIVC
<代码>myDIVZ
作为ID:)