【发布时间】:2020-09-14 11:55:01
【问题描述】:
我正在使用带有 PHP foreach 循环的 ORDER BY RAND() 从数据库中获取文章:
<?php foreach($posts as $post): ?>
<div class="post" id="post">
<article>
<div class="post-head">
<a href="<?php echo ROUTE; ?>/profile.php/<?php echo $post['user_id']; ?>">
<img class="post-pfp" src="<?php echo ROUTE; ?>/users_pics/<?php echo ($post['profile_pic']); ?>">
</a>
<h1>
<a class="links-3" href="<?php echo ROUTE; ?>/profile.php?user=<?php echo $post['user_id']; ?>"><?php echo $post['post_by']; ?></a>
</h1>
<p class="post-date"><?php echo get_date($post['date']); ?></p>
<div class="x_hover" onclick="hide_post()">
<img src="<?php echo ROUTE; ?>/icons/cross.svg">
</div>
<hr id="post-hr">
<br>
<a href="<?php echo ROUTE; ?>/post.php?p=<?php echo $post['ID']; ?>">
<p class="post-content"><?php echo $post['content']; ?></p>
</a>
</div>
</article>
</div>
<?php endforeach; ?>
如你所见,x_hover 类的 div 有一个 onclick 属性:
<div class="x_hover" onclick="hide_post()">
<img src="<?php echo ROUTE; ?>/icons/cross.svg">
</div>
hide_post() 函数的作用是这样的:
var post = document.getElementsByClassName("post");
function hide_post(){
if (post[0].style.display = "block") {
post[0].style.display = "none"
}
}
我是 JS 新手,所以我也有一些问题。
我们声明var post等于所有类名为“post”的元素,比如我开头添加的HTML代码,有post这个类:
<div class="post" id="post">
此 div 具有 display: block; 属性。但是,当我运行所有这些代码时,它只会变成display: none 将我们从数据库中带入的第一个元素,它不适用于其余的元素......
为什么会这样?
【问题讨论】:
标签: javascript php html css