我试图通过添加和删除一个带有display:none属性的css类来切换导航栏的显示。我的js将添加类,但不会删除它,以防止nav隐藏。
<div class="hambugerMenu">
<i class="bars"></i>
</div>
<div id="mobileNav" class="mobileNav">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</div>
.mobileNavHidden {
display: none;
}
document.querySelector('.hambugerMenu').addEventListener('click', ()=> {
hideShowNav()
})
function hideShowNav() {
var nav = document.querySelector('#mobileNav')
if (nav.classList.contains("mobileNav")) {
nav.classList.add("mobileNavHidden")
}
else if (nav.classList.contains('mobileNavHidden')) {
nav.classList.remove("mobileNavHidden")
}
}
发布于 2017-06-21 05:05:33
nav
仍然具有mobileNav
类,因此第一个if-语句将被触发,并且不允许运行else-if-语句。您可以将其更改为先检查mobileNavHidden
是否在那里,然后再决定如何处理它。
例如
if (nav.classList.contains("mobileNavHidden")) {
nav.classList.remove("mobileNavHidden")
}
else {
nav.classList.add("mobileNavHidden")
}
发布于 2017-06-21 05:07:43
改变你的功能
function hideShowNav() {
var nav = document.querySelector('#mobileNav')
if (nav.classList.contains('mobileNavHidden')) {
nav.classList.remove("mobileNavHidden")
}
else {
nav.classList.add("mobileNavHidden")
}
}
https://stackoverflow.com/questions/44662870
复制相似问题