javascript - Java 脚本代码仅适用于第一个按钮?
问题描述
我试图用按钮实现一个导航栏,它的功能是下拉列表。事件监听器正在工作,但无论我单击哪个按钮,它都只会打开第一个按钮的内容。
这是我的代码:
for (let i = 0; i < 5; ++i) {
const bnts = document.getElementsByClassName("dropbutton");
bnts[i].addEventListener("click", showAndHide);
}
function showAndHide() {
var click = document.getElementsByClassName("drop-content")[0];
if (click.style.display === "none") {
click.style.display = "block";
} else {
click.style.display = "none";
}
};
<div class="dropdown">
<button id="button1" class="dropbutton">Home</button>
<div class="drop-content">
<a href="#">Test1</a>
<a href="#">Test2</a>
<a href="#">Test3</a>
</div>
<button id="button1" class="dropbutton">Arrivals</button>
<div class="drop-content">
<a href="#">Test111</a>
<a href="#">Test222</a>
<a href="#">Test3</a>
</div>
<button id="button1" class="dropbutton">Clothing</button>
<div class="drop-content">
<a href="#">Test1123</a>
<a href="#">Test212</a>
<a href="#">Test3</a>
</div>
<button id="button1" class="dropbutton">Schoes</button>
<div class="drop-content">
<a href="#">Test1</a>
<a href="#">Testaasdf2</a>
<a href="#">Test3</a>
</div>
</div>
解决方案
使用https://developer.mozilla.org/en-US/docs/Web/API/Event/target
function showAndHide(event){
var click = event.target;
推荐阅读
- html - 从多个类中选择具有特定类的元素
- c++ - 如何通过保持第一个插入保持在其位置来对插入到列表中的其余元素进行排序?
- node.js - 带有 ESC/POS 的 NodeJS 的 Epson 热敏打印机状态
- javascript - 我可以确定哪个 .js 脚本正在更改特定的 HTML 元素吗?
- python - 使用 pcolor 在绘图中显示 z 值:为什么它适用于两个图形之一而不适用于另一个?
- azure-devops - 将构建版本传递给发布
- data-structures - 逻辑表达式的表达式树
- android - 在 kotlin 中有声音的 listView
- c - 如何使用信号量使子进程相互同步?
- c# - 有没有办法以编程方式检测加密字符串中的 AES 加密级别?(128 对 192 对 256)