简体   繁体   English

下一个兄弟姐妹如何工作?

[英]How the next sibling works?

I'm new on js and this is the first time I'm using the nextSibling selector, I'm trying to implement a dropdown menu. 我是js的新手,这是我第一次使用nextSibling选择器,我试图实现一个下拉菜单。 In the code below, I need to display the sub-menu when I click on a menu item. 在下面的代码中,单击菜单项时需要显示子菜单。 How can I fix this? 我怎样才能解决这个问题?

 var k=document.getElementsByClassName("menu-title"); for(i=0;i < k.length ;i++) { k[i].addEventListener("click",function(){ //alert("hai"); this.nextSibling.style.display = "block"; }); } 
 html,body { width:100%; height:100%; } navbar{ width:100%; height:50%; background-color:green; float:left; } main{ float:left; width:100%; height:50%; background-color:yellow; } .nav-sec-level{ color:white; background-color:aqua; display:none; } .menu-title{ cursor : pointer; } 
 <navbar> <ul> <li class="menu-title">Fruits <ol class="nav-sec-level"> <li>Mango</li> <li>Apple</li> </ol> </li> <li class="menu-title">Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li class="menu-title">Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li class="menu-title">Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Colours <ol class="nav-sec-level"> <li>Red</li> <li>Green</li> </ol> </li> </ul> </navbar> <main> </main> 

What you are looking for is not nextSibling as it will give you next node at same level. 您要找的不是nextSibling ,因为它将为您提供下一个相同级别的节点。 You should search inside this for nav-sec-level and toggle visible. 您应该在其中搜索nav-sec-level并切换可见。

Sample 样品

 var k = document.querySelectorAll(".menu-title"); for (i = 0; i < k.length; i++) { k[i].addEventListener("click", function() { var subMenu = this.querySelector('.nav-sec-level'); if(subMenu.style.display === 'block') subMenu.style.display = 'none'; else subMenu.style.display = 'block' }); } 
 html, body { width: 100%; height: 100%; } navbar { width: 100%; height: 50%; background-color: green; float: left; } main { float: left; width: 100%; height: 50%; background-color: yellow; } .nav-sec-level { color: white; background-color: aqua; display: none; } .menu-title { cursor: pointer; } 
 <navbar> <ul> <li class="menu-title">Fruits <ol class="nav-sec-level"> <li>Mango</li> <li>Apple</li> </ol> </li> <li class="menu-title">Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li class="menu-title">Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li class="menu-title">Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Birds <ol class="nav-sec-level"> <li>Kiwi</li> <li>Dove</li> </ol> </li> <li>Colours <ol class="nav-sec-level"> <li>Red</li> <li>Green</li> </ol> </li> </ul> </navbar> <main> </main> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM