Javascript多级下拉菜单
Javascript multi level dropdown menu
HTML代码:
<ul class="nav-menu">
<li id="no" onmouseover="dropDown()" onmouseout="reverseDropDown()">
<a href="#" >Birds</a>
<ul class="menu">
<li id="no2" ><a href="#" onmouseover="dropDown2()" onmouseout="reverseDropDown2()">Ratites</a>
<ul class="submenu">
<li><a href="">Ratites</a></li>
<li><a href="">Fowl</a></li>
<li><a href="">Neoaves</a></li>
</ul>
</li>
<li><a href="">Fowl</a></li>
<li><a href="">Neoaves</a></li>
</ul>
</li>
<li id="no" onmouseover="dropDown()" onmouseout="reverseDropDown()">
<a href="#">Dogs</a>
<ul class="menu">
<li><a href="">Big</a></li>
<li><a href="">Red</a></li>
<li><a href="">Noizy</a></li>
</ul>
</li>
CSS代码:
a {
color: #06c;
}
ul {
padding: 0;
margin: 0;
background: pink;
float: left;
}
li {
float: left;
display: inline;
position: relative;
width: 150px;
list-style: none;
}
.menu {
position: absolute;
left: 0;
top: 100%;
background: #ccc;
display: none;
}
.submenu{
position: absolute;
top:0px;
left:70px;
background: #ccc;
display: none;
}
Javascript代码:
function dropDown() {
var submenu = document.getElementById('no').getElementsByClassName('menu')[0];
submenu.style.display="block";
}
function reverseDropDown(){
var submenu = document.getElementById('no').getElementsByClassName('menu')[0];
submenu.style.display="none";
}
function dropDown2() {
var submenu = document.getElementById('no2').getElementsByClassName('submenu')[0];
submenu.style.display="block";
}
function reverseDropDown2(){
var submenu = document.getElementById('no2').getElementsByClassName('submenu')[0];
submenu.style.display="none";
}
JSFiddle:http://jsfiddle.net/wkmd7h0r/33/
我想使用javascript制作一个多级下拉菜单(没有像jquery这样的库,也没有使用css悬停属性等)。
我已经尝试了很多方法,这是最后一种,但我无法让它发挥作用。有人能帮我做解释和/或辅导吗。因为我在谷歌上搜索了一个,除了使用纯CSS或JQuery的菜单外,什么都找不到。
谢谢。
首先:您应该真正使用事件处理程序。将逻辑与代码分离(将所有js移动到外部文件中)。
我对它进行了一些修改,以反映一种可能性(更改了HTML、JS、CSS):
完整代码在这里jsFiddle
最重要的是,停止触发父A标签:将onclick函数放在链接上,而不是它的父li
function dropDown(a) {
var li = a.parentElement,
submenu = li.getElementsByTagName('ul')[0];
submenu.style.display = submenu.style.display == "block" ? "none" : "block";
return false;
}
相关文章:
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- angular的下拉菜单
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- 下拉菜单在菜单按钮的边缘闪闪发光
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- 硒IDE下拉菜单
- 我的下拉菜单中的链接不起作用
- Bootstrap Dropdown selection是在*all*下拉菜单上设置选择
- 如何将JSON转换为HTML下拉菜单
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 如何在不插入整个代码的情况下嵌入现有的多级下拉菜单
- 使用 jquery 的多级下拉菜单
- Javascript多级下拉菜单
- 带有链接的Javascript多级下拉菜单
- 多级下拉导航-保持二级下拉菜单关闭
- 如何设置多级下拉菜单的格式
- 多级下拉菜单有切换问题
- 关闭多级jquery下拉菜单
- 在选择操作中使用多级下拉菜单