【发布时间】:2017-08-06 16:02:57
【问题描述】:
根据标题,我正在制作一个带有多个下拉菜单的导航栏。这个想法是在鼠标悬停时打开下拉菜单。
我写了以下函数:
function toggleStudies() {document.getElementsByClassName('dropdown-content')[0].classList.toggle("show")}
function toggleUtils() {document.getElementsByClassName('dropdown-content')[1].classList.toggle("show")}
...最多('dropdown-content')[4]。
此外,我还必须在每个 div 上放置两次函数,如下所示:
<div class="dropdown" onmouseout="toggleStudies()" onmouseover="toggleStudies()" >
而它应该在鼠标悬停时显示隐藏的div,即dropdown-content,并在鼠标移出时将其隐藏回来,其组织方式如下:
<div class="dropdown" onmouseout="toggleStudies()" onmouseover="toggleStudies()" >
<button class="dropbtn" >Studies</button>
<div class="dropdown-content">
<a href="#">X</a>
<a href="#">Y</a>
<a href="#">W</a>
<a href="#">Z</a>
</div>
又重复了四次。
它是这样工作的。但是,我想要的是让它更干燥。
我曾考虑过一个循环,它将 addEventListener onmouseover 和 onmouseout 传递给所有 <div class="dropdown">" 元素,但我想不出一个可以传递的函数,以便它可以替代前五个 function toggle()。
怎么做?
【问题讨论】:
-
将悬停监听器添加到
a标签,然后在回调中你可以访问悬停在this的监听器
标签: javascript html css