【发布时间】:2021-01-15 12:15:33
【问题描述】:
我有一个下拉菜单,我试图在单击该下拉按钮后切换按钮的 ul 子项上的 display:block 类。当前 ul 设置为 display:none 直到单击主按钮父级。所以目前只有父级显示在屏幕上。
我很难正确设置这些循环。我可以设置它,因此当单击一个按钮时,会显示每个项目的所有 ul,但我只想要相应按钮下的那个。
HTML:
<div class="dropdown">
<div class="project">
<button>website 1<i class="fas fa-caret-down"></i></button>
<ul class="drop-list">
<li><a href="#">Live Website</a></li>
<li><a href="#">Resources</a></li>
</ul>
</div>
<div class="project">
<button>Website 2<i class="fas fa-caret-down"></i></button>
<ul class="drop-list">
<li><a href="#">Live Website</a></li>
<li><a href="#">Resources</a></li>
</ul>
</div>
</div>
JAVASCRIPT:
const projects = document.querySelectorAll('.project')
const dropdown_lists = document.querySelectorAll('.drop-list')
projects.forEach(button => button.addEventListener('click', function(){
// Feel like I need a forEach loop here to loop through the dropdown_lists or a reg for loop
// for(i=0;i<dropdown_lists.length;i++) - maybe something like this
// then I need to classList.toggle('active') on this ul
// I'm getting stuck on how to make this in sync with the corresponding project button
}))
CSS:
.drop-list {
display: none;
}
.active {
display: block;
}
我需要的是当单击项目[0] 时,将“活动”类从列表中切换为 dropdown_lists[0]。 当单击项目[1] 时,会将“活动”类从列表中切换为 dropdown_lists[1]。
再次,我可以设置代码,因此当我单击一个按钮时,所有 ul 下拉列表都会切换类“活动”,但我只希望第一个按钮与第一个 ul 一起使用,第二个按钮与第二个 ul 一起使用。
我只是不知道该怎么做,要么在下拉列表 === 2 和项目 === 2 时创建一个布尔值,而不是切换类。我只是想不出轻松做到这一点的最佳做法。
感谢您的帮助。
谢谢
【问题讨论】:
标签: javascript html css