gpt4 book ai didi

javascript - 如何只为当前按钮实现onclick事件?

转载 作者:行者123 更新时间:2023-11-28 08:59:24 24 4
gpt4 key购买 nike

我想在单击按钮时显示/隐藏带有子项的 div,但不想在不同父 block 中显示/隐藏其他相同的 div。抱歉我的解释和js知识不好,也许代码可以说得更好:

for (a = 0; a < document.querySelectorAll("#hidereplies").length; a++) {
var btn = document.querySelectorAll("#hidereplies")[a];
btn.onclick = function () {
for (var y = 0; y < document.querySelectorAll(".reply_comments").length; y++) {
var reply = document.querySelectorAll(".reply_comments")[y];
reply.style.display = (reply.style.display != 'none' ? 'none' : 'block');
}
};
}

Demo on jsfiddle .

最佳答案

您做错了一些事情。

首先,在 HTML 中,不要多次使用 ID。您已为按钮指定了相同的 ID。

接下来,将 querySelector 结果分配给一个数组并迭代该数组。

第三,您需要确定查询范围。您正在检查 document 上的元素,因此所有内容都会被拉入,而不是限制在当前 div 范围内。

//note that I've changed from an ID to a class for your buttons
var buttons = document.querySelectorAll(".hidereplies");

for (a = 0; a < buttons.length; a++) {
var btn = buttons[a];
btn.onclick = function (event) {
var btn = event.currentTarget; //get the current button clicked
var comments = btn.parentNode.querySelectorAll(".reply_comments"); //scope the search
for (var y = 0; y < comments.length; y++) {
var reply = comments[y];
reply.style.display = (reply.style.display != 'none' ? 'none' : 'block');
}
};
}

HTML

<div class="comments_list">
<div class="comment_item">
<div class="comment_body">test1 - comments</div>
<input type="button" class="hidereplies" value="show replies" />
<div class="reply_comments">
<div class="comment_body">want to hide only current ".reply_comments"</div>
</div>
</div>
<div class="comment_item">
<div class="comment_body">test2 - comments</div>
<input type="button" class="hidereplies" value="show replies" />
<div class="reply_comments">
<div class="comment_body">but not all</div>
</div>
</div>
<div class="comment_item">
<div class="comment_body">test3 - no comments</div>
<div class="reply_comments"></div>
</div>
</div>

您更新的 fiddle - http://jsfiddle.net/yhtKa/4/

关于javascript - 如何只为当前按钮实现onclick事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com