【发布时间】:2017-10-05 01:17:13
【问题描述】:
我对 JavaScript 不熟悉,我希望能在我似乎无法解决的问题上获得一些帮助。我的网站上目前有 2 个下拉菜单。一个是导航的下拉菜单,单击汉堡菜单图标时会激活该菜单。第二个下拉菜单用于在我的网站上显示类别。目前,当我单击一个下拉菜单时,我必须再次单击它才能关闭它。如果我单击第二个下拉菜单而不关闭第一个下拉菜单,则两者都将保持可见。我想要发生的是两件事。首先,我希望这样,如果用户单击 div 之外的任何位置以获取下拉菜单,它会自动关闭。我希望看到的第二件事是一次只能看到一个下拉菜单。因此,如果我单击一个并且另一个下拉菜单打开,我希望它关闭。希望我解释得很好。现在进入我正在使用的代码。
以下内容在我脑海中。
<script>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function DropDownMenuNavigation() {
document.getElementById("b2DropDownMenuNav").classList.toggle("show");
}
function DropDownMenuCategory() {
document.getElementById("b2DropDownMenuCat").classList.toggle("show");
}
</script>
然后我使用它作为按钮来激活导航下拉菜单。这包含在我的身体里。
<div class="dropbtn" style="float: left;">
<button onclick="DropDownMenuNavigation()" class="dropbtn">☰ MENU</button>
</div>
这是我用来包含我的类别下拉菜单的东西。
<div class="dropbtn" style="float: left;">
<button onclick="DropDownMenuCategory()" class="dropbtn">CATEGORIES</button>
</div>
现在最后是我使用的 css,只是偶然有帮助。
/* Dropdown Button */
.dropbtn {
background-color: #0066a2;
color: white;
padding: 1px;
font-size: 15px;
font-weight: bold;
border: none;
cursor: pointer;
}
.dropbtn a {
color: #FFFFFF;
text-decoration: none;
font-size: 15px;
font-weight: bold;
}
/* The container <div> - needed to position the dropdown content */
.dropdown {
float: left;
position: relative;
display: inline-block;
}
/* Dropdown Content (Hidden by Default) */
.dropdown-content {
display: none;
position: absolute;
background-color: #0066a2;
min-width: 260px;
max-width: 960px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
/* Links inside the dropdown */
.dropdown-content a {
color: #000000;
text-decoration: none;
}
/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */
.show {display:block;}
那么,按照我的要求,最好的方法是什么?有人可以帮我一把,并指出我正确的方向。非常感谢,感谢您提供给我的任何帮助。
【问题讨论】:
-
所以选择另一个并删除类
-
是的,我想过这样做,但我尝试的所有方法似乎都不适合我。我该怎么做呢?我要做的就是从对面的下拉菜单中删除“show”类?
-
所以你做到了:
document.getElementById("b2DropDownMenuNav").classList.remove("show"); -
是的,我试过了,但从我所看到的来看,它没有任何效果。我把它放在切换线之后,它什么也没做。我把它放在切换线之前,当我点击任一按钮时什么都没有发生。
标签: javascript html css drop-down-menu