3 回答
TA贡献1853条经验 获得超9个赞
ID 必须是唯一的,并且由于您已经命名了所有 ID,因此post只有第一个 ID 才会被“看到”。使 ID 唯一,更改您的hide_post函数以接受要隐藏的 ID 名称,并将唯一 ID 添加到您的onclick调用中。
改变
<div class="post" id="post">
类似的东西
<div class="post" id="post<?php echo $post['ID']; ?>">
然后改变
<div class="x_hover" onclick="hide_post()">
到
<div class="x_hover" onclick="hide_post('post<?php echo $post['ID']; ?>')">
最后,修改您的hide_post函数以接受要显示或隐藏的 ID 的名称。
function hide_post(idToHide){
if (idToHide.style.display = "block") {
idToHide.style.display = "none"
}
}
TA贡献1865条经验 获得超7个赞
一种更干净的方法是这样做。
function hide_post() {
document.querySelectorAll('.post').forEach(v => {
if(v.style.display == block) v.style.display = none; }); }
TA贡献1850条经验 获得超11个赞
当您使用getElementsByClassName它时,它会返回一个HTMLCollection. 如果您想要的话,您应该迭代元素并隐藏所有元素。现在您只是隐藏该集合的第 0 个元素。
var posts = document.getElementsByClassName("post");
for (let post of posts) {
if (post.style.display = "block") {
post.style.display = "none"
}
}
如果您打算隐藏单个帖子,您可以为 div 提供唯一的 id,并hide_post使用该帖子的 id 进行调用。你也应该用getElementById它。请注意,它不是复数。函数应该是这样的:
function hide_post(postId){
var post = document.getElementById(postId);
if (post.style.display = "block") {
post.style.display = "none"
}
}
- 3 回答
- 0 关注
- 108 浏览
添加回答
举报