Javascript 函数中变量的分组.第2部分

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

我昨天问了一个关于的问题,我得到了答案,但它只解决了我一半的问题:

我希望能够在javascript中对变量进行分组,这样我就可以选择一组要显示的div和一组要隐藏的div。根据上一个问题,我现在有:

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:)