JavaScript 单击第一个项目以外的项目时,导航菜单不会关闭
JavaScript nav menu doesn't close when item, other than the first, is clicked
所以我得到了这个 JS 移动导航菜单。单击菜单按钮时,菜单打开,然后可以通过再次按菜单按钮关闭。我还希望在单击其中一个导航项时关闭菜单。使用下面的代码,我设法在单击第一个项目时关闭菜单,但由于我自己不知道的原因,它不适用于其他三个导航项目。这可能与我选择 nav-item
class 的方式有关吗?另外,我的 Javascript 知识非常有限,所以我可能遗漏了一些明显的东西。
HTML
<nav class="main-nav">
<a href="#" class="nav-menu"><i class="fa fa-bars" aria-hidden="true"></i></a>
<div class="sidebar is-hidden">
<ul>
<li><a class="nav-item page-scroll" href="#about">ABOUT</a></li>
<li><a class="nav-item page-scroll" href="#framing">FRAMING</a></li>
<li><a class="nav-item page-scroll" href="#gallery">GALLERY</a></li>
<li><a class="nav-item page-scroll" href="#contact">CONTACT</a></li>
</ul>
</div>
</nav>
JS
const button = document.querySelector('.nav-menu')
const sidebar = document.querySelector('.sidebar')
const item = document.querySelector('.nav-item')
button.addEventListener('click', function (e) {
e.preventDefault();
sidebar.classList.toggle('is-hidden')
});
item.addEventListener('click', function () {
sidebar.classList.toggle('is-hidden')
});
方法document.querySelector
returns第一个找到的元素。如果要为多个元素添加事件侦听器,则应改用 document.querySelectorAll
方法。您将收到一个元素列表。您想为它们中的每一个添加事件侦听器。
所以我得到了这个 JS 移动导航菜单。单击菜单按钮时,菜单打开,然后可以通过再次按菜单按钮关闭。我还希望在单击其中一个导航项时关闭菜单。使用下面的代码,我设法在单击第一个项目时关闭菜单,但由于我自己不知道的原因,它不适用于其他三个导航项目。这可能与我选择 nav-item
class 的方式有关吗?另外,我的 Javascript 知识非常有限,所以我可能遗漏了一些明显的东西。
HTML
<nav class="main-nav">
<a href="#" class="nav-menu"><i class="fa fa-bars" aria-hidden="true"></i></a>
<div class="sidebar is-hidden">
<ul>
<li><a class="nav-item page-scroll" href="#about">ABOUT</a></li>
<li><a class="nav-item page-scroll" href="#framing">FRAMING</a></li>
<li><a class="nav-item page-scroll" href="#gallery">GALLERY</a></li>
<li><a class="nav-item page-scroll" href="#contact">CONTACT</a></li>
</ul>
</div>
</nav>
JS
const button = document.querySelector('.nav-menu')
const sidebar = document.querySelector('.sidebar')
const item = document.querySelector('.nav-item')
button.addEventListener('click', function (e) {
e.preventDefault();
sidebar.classList.toggle('is-hidden')
});
item.addEventListener('click', function () {
sidebar.classList.toggle('is-hidden')
});
方法document.querySelector
returns第一个找到的元素。如果要为多个元素添加事件侦听器,则应改用 document.querySelectorAll
方法。您将收到一个元素列表。您想为它们中的每一个添加事件侦听器。