javascript - 按钮在javascript中显示/隐藏div,切换不起作用
问题描述
我有这个 html 代码:
<div class="feedback-middle">
<button id="btn-1" class="bt1"><p class="b1">What is netflix</p></button>
<div id="btn-1-content" class="aa">ssss</div>
<button id="btn-2" class="bt1"><p class="b1">What is netflix</p></button>
<div id="btn-2-content" class="aa">ssss</div>
<button id="btn-3" class="bt1"><p class="b1">What is netflix</p></button>
<div id="btn-3-content" class="aa">ssss</div>
</div>
和CSS代码:
#btn-1-content,
#btn-2-content,
#btn-3-content {
display: none;
}
.show {
display: block !important;
height: 100px;
background: #303030;
width: 40%;
}
和js代码:
var buttons = document.querySelectorAll(".bt1");
var content = document.querySelectorAll(".aa");
function remove() {
content.forEach((item) => item.classList.remove("show"));
}
buttons.forEach((item) =>
item.addEventListener("click", function (e) {
remove();
const contents = document.querySelector(`#${this.id}-content`);
contents.classList.toggle("show");
})
);
所以这个问题是,当我第一次单击按钮时,我在下面打开了 div,但是当我第二次单击它时,我希望 div 关闭,但它没有
解决方案
原来我没有正确理解这个问题。问题是,您show
要从函数中的所有内容 div 中删除该类remove()
。然后你show
再次将该类添加到相应的内容 div 中,它实际上并没有切换内容。
简单的修复。在函数内部,仅当 div 已经拥有该类remove()
时才删除该类。show
这是一个小提琴
https://jsfiddle.net/sap4bn8d/
更新show
如果相应的内容已经显示,
我们忘记删除类。这是修复:
https ://jsfiddle.net/sap4bn8d/1/
推荐阅读
- css - 当内容发生变化时,为 div 的扩展添加平滑过渡(React)
- javascript - 问题导航背景颜色不变
- r - BOX.TEST 的 Rmarkdown 输出以错误的方式打印
- node.js - 尝试刷新 googleapis 的访问令牌时出现 invalid_grant 错误
- arrays - 将字符串集与 CSV 中的行进行比较(批处理命令)
- d3.js - 鼠标事件上的 D3 工具提示
- c++ - '[' token auto[d, u] = *pq.begin();
- lua - 在 LUA 中克隆对象
- 3d - 3D投影时如何找到显示面的位置?
- discord.js - 清除后清除命令抛出错误 - Discord.js V13