如何使用javascript onclick菜单隐藏/显示列表项。

如何使用javascript onclick菜单隐藏/显示列表项。,javascript,onclick,html-lists,toggle,mapbox,Javascript,Onclick,Html Lists,Toggle,Mapbox,我使用的是Mapbox,它有一个菜单,可以打开和关闭标记,还有一个由javascript生成并填充标记标题的列表。我需要的是在切换不同类别时更改列表项,而不是显示整个列表。是否可以使用if,else语句来执行此操作 这里是一个指向live map的链接:这里是脚本(我遗漏了一些多余的菜单onclick代码,我还没有弄清楚如何组合这些代码,因此我不必对每个菜单项重复): L.mapbox.accessToken='pk.eyj1ijoizgutzmlus1hcnqiljhijoidfjyclf

我使用的是Mapbox,它有一个菜单,可以打开和关闭标记,还有一个由javascript生成并填充标记标题的列表。我需要的是在切换不同类别时更改列表项,而不是显示整个列表。是否可以使用if,else语句来执行此操作

这里是一个指向live map的链接:

这里是脚本(我遗漏了一些多余的菜单onclick代码,我还没有弄清楚如何组合这些代码,因此我不必对每个菜单项重复):


L.mapbox.accessToken='pk.eyj1ijoizgutzmlus1hcnqiljhijoidfjyclfabyj9.sBXgFmwT-4dhgaevwenkua';
var map=L.mapbox.map('map','de fine art.lh9dpd0k'),
markerList=document.getElementById('marker-list');
sxsw=document.getElementById('filter-sxsw'),
性能=document.getElementById('filter-performance'),
杂项=document.getElementById('filter-miscellaneous'),
参与方=document.getElementById('filter-party'),
streetart=document.getElementById('filter-streetart'),
gallery=document.getElementById('filter-gallery'),
博物馆=document.getElementById('filter-museum'),
all=document.getElementById('filter-all');
map.featureLayer.on('ready',函数(e){
map.featureLayer.eachLayer(函数(层){
var item=markerList.appendChild(document.createElement('li');
item.innerHTML=layer.toGeoJSON().properties.title;
item.style.background=layer.toGeoJSON().properties['marker-color'];
item.onclick=函数(){
map.setView(layer.getLatLng(),16);
layer.openPopup();
};
});
});
museum.onclick=功能(e){
all.className='';
gallery.className='';
streetart.className='';
party.className='';
miscellaneous.className='';
performance.className='';
sxsw.className='';
this.className='active';
//setFilter函数接受GeoJSON功能对象
//并返回true以显示它,或返回false以隐藏它。
map.featureLayer.setFilter(函数(f){
返回f.properties['marker-symbol']='museum';
});
返回false;
};
all.onclick=函数(){
museum.className='';
gallery.className='';
streetart.className='';
party.className='';
miscellaneous.className='';
performance.className='';
sxsw.className='';
this.className='active';
map.featureLayer.setFilter(函数(f){
//为所有标记返回true将显示所有内容。
返回true;
});
返回false;
};

`
为什么要将
className
设为空?。对于简单的隐藏/显示,您应该检查
display:none
可见性:hidden
,具体取决于requirement@Rakesh_Kumar这样看来,当一个类别处于活动状态时,它会使所有其他类别处于非活动状态,否则它们将保持蓝色。