【发布时间】:2019-07-31 02:00:30
【问题描述】:
我制作了一个按钮,使我的 div 隐藏和可见。 一次或两次效果很好,但后来就不行了 (我单击带有 column1 的按钮 不打开第 1 列的隐藏 div 然后我点击 column2 column2 的隐藏 div 正在打开....)
对不起,我的英语不好,但我真的很想知道为什么????
var tabList = document.querySelectorAll("li");
tabList.forEach(function(tab, index) {
tab.addEventListener('click', function() {
removeOther();
tab.classList.toggle("on");
btnEvent(tab);
});
});
function removeOther() {
for (var i = 0; i < tabList.length; i++) {
if (tabList[i].classList.contains("on")) {
tabList[i].classList.remove("on");
}
}
}
var btn = document.getElementsByTagName("button")[0];
function btnEvent(tab) {
var hiddenTabs = tab.querySelectorAll('.hidden');
btn.addEventListener("click", function() {
for (var i = 0; i < hiddenTabs.length; i++) {
hiddenTabs[i].classList.toggle("hidden");
}
})
}
div {
background: salmon;
width: 50px;
height: 50px;
margin: 5px;
display: none;
}
div.hidden,
li.on div.hidden {
display: none;
}
li.on div {
display: block;
}
<ul>
<li class="on">column1
<div>box</div>
<div>box</div>
<div>box</div>
<div class="hidden">box</div>
<div class="hidden">box</div>
<div class="hidden">box</div>
</li>
<li>column2
<div>box</div>
<div>box</div>
<div>box</div>
<div class="hidden">box</div>
<div class="hidden">box</div>
<div class="hidden">box</div>
</li>
<li>column3
<div>box</div>
<div>box</div>
<div>box</div>
<div class="hidden">box</div>
<div class="hidden">box</div>
<div class="hidden">box</div>
</li>
</ul>
<button>click!</button>
【问题讨论】:
-
你想对
on类做什么? -
每次单击
- 时,您都会在
上只有一个事件侦听器 -
可以分享一下对应的款式吗?
.on.hidden -
对不起,这是我的风格标签 div{ background:salmon;宽度:50px;高度:50 像素;边距:5px;显示:无; } div.hidden,li.on div.hidden{ 显示:无; } li.on div{ 显示:块; }
标签: javascript html css web