javascript - 我做了一个汉堡菜单按钮,但它只切换第一个元素
问题描述
所以我做了我的小汉堡图标,我做了我的切换 JS 功能,但它似乎只切换列表的第一个元素。这是我的 HTML 标题和汉堡菜单的按钮:
<button onclick='hideBlock()' class="hamburger">
<span>—</span>
<span>—</span>
<span>—</span>
</button>
<header>
<nav>
<div class="row">
<!-- <img src="resurse/img/logo.png" alt="logo-alb" class="logo"> -->
<ul class="main-nav">
<li class="e-nav"><a href="#descriere">Descriere magazin</a></li>
<li class="e-nav"><a href="#functioneaza">Cum functioneaza ?</a></li>
<li class="e-nav"><a href="#adresa">Adresa</a></li>
<li class="e-nav"><a href="#recenzii">Recenzii</a></li>
<li class="e-nav"><a href="#promotii">Promotii</a></li>
<li class="e-nav"><a href="#contact">Contact</a></li>
</ul>
</div>
</nav>
<div class="hero-text-box">
<h1>Cel mai bun magazin. <br> Cele mai bune preturi.</h1>
<a href="#adresa" class="btn btn-full">Vreau sa cumpar</a>
<a href="#promotii" class="btn btn-ghost">Arata-mi mai mult</a>
</div>
</header>
这是我试过的 JS 函数:
function hideBlock() {
x = document.querySelector('.main-nav .e-nav');
if (x.style.display === 'none') {
x.style.display = 'block'
} else {
x.style.display = 'none'
}
}
此外,这是我试图在其中实现的查询的 CSS:
.main-nav .e-nav{
display: none;
text-align: center;
margin-top: 20px;
font-size: 120%;
}
我不太确定解决方案可能是什么,任何形式的帮助都会非常感激
解决方案
我后来实际上找到了解决这个问题的方法。我尝试根据评论中某人的建议更改我的代码,document.querySelectorAll(".main-nav li")
但这在我的控制台中引发了一个错误,其中指出Cannot read property 'display' of undefined
. 那是因为 querySelectorAll 返回一个 nodeList。因此,为了解决这个问题,我必须遍历每个节点,因为我希望在按下按钮时显示和隐藏所有项目。所以我循环我的代码如下:
function hideBlock() {
var x = document.querySelectorAll('.main-nav li');
for (var i = 0; i < x.length; i++) {
if (x[i].style.display === 'none') {
x[i].style.display = 'block'
} else {
x[i].style.display = 'none'
}
}
}
感谢所有试图帮助我的人,希望你有一个美好的一天:)
推荐阅读
- android - 使用底部应用栏标签导航 - 颤动
- c# - 为什么我的表单大小在两种不同的解决方案中表现不同?
- data-structures - 为什么单个数组中不可能有多种数据类型?- 数据结构
- sh - 在linux中的变量中获取上一个目录路径
- android - 带有换行内容的相对布局
- angular - 用户单击要删除的其他产品,但默认情况下它会从购物车中删除最后一个产品在离子电子商务应用程序中
- java - ReplyingKafkaTemplate 是否阻塞?
- java - 如何捕捉 FileNameExtensionFilter 并为它们制定逻辑?
- c# - DbContext 模型构建器中的用户详细信息
- php - 目前卡在虚拟连接 PHP 和 SQL SERVER 2012