清除和更改 div 的内容

Posted

技术标签:

【中文标题】清除和更改 div 的内容【英文标题】:clearing and changing content of div 【发布时间】:2014-12-21 19:06:39 【问题描述】:

我正在尝试通过再次加载并替换旧 cmets 来用新 cmets 替换 cmets div 的内容。当我更改 div 的内容时,它只替换第一条评论并重复整个评论:

这里是 cmets div:

<?php
$comment_qry = mysqli_query($conn, "SELECT * FROM comments WHERE post_id='$post_row[id]' ORDER BY id DESC");
while($comment_row = mysqli_fetch_array($comment_qry)) 
?>
<div id="comments_div">
    <div style="background:#aaaaaa; margin:5px;">
        <p onclick="report_var(<?php echo $post_row['id']; ?>, <?php echo $comment_row['user_id']; ?>);">report</p>
        <p>user: <?php echo $comment_row['user_id']; ?></p>
        <p>date: <?php echo date("Y-m-d", $comment_row['date']); ?></p> 
        <p>content: <?php echo $comment_row['content']; ?></p>
        <?php if($post_row['user_id'] == $my_id or $comment_row['user_id'] == $my_id or $admin == 1) ?>
             <p><span onclick="comment_remove(<?php echo $comment_row['id']; ?>, <?php echo $comment_row['user_id']; ?>);">delete</span></p>
        <?php  ?>
    </div>
</div>
<?php  ?>

ajax 代码:

/////////////////////////comment function
function comment(post_id, poster_id)

loadXMLDoc("php/comment.php?post_id="+post_id+" content="+document.getElementById("content").value+"&poster_id="+poster_id,function()
  
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    
        document.getElementById("comments_div").innerhtml = xmlhttp.responseText;
    
  );

comment.php:

<?php
$comment_qry = mysqli_query($conn, "SELECT * FROM comments WHERE post_id='$_GET[post_id]' ORDER BY id DESC");
while($comment_row = mysqli_fetch_array($comment_qry)) 
?>
    <div style="background:#aaaaaa; margin:5px;" class="comment">
        <p onclick="report_var(<?php echo $post_row['id']; ?>, <?php echo $comment_row['user_id']; ?>);">report</p>
        <p>user: <?php echo $comment_row['user_id']; ?></p>
        <p>date: <?php echo date("Y-m-d", $comment_row['date']); ?></p> 
        <p>content: <?php echo $comment_row['content']; ?></p>
        <?php if($_GET['poster_id'] == $my_id or $comment_row['user_id'] == $my_id or $admin == 1) ?>
             <p><span onclick="comment_remove(<?php echo $comment_row['id']; ?>, <?php echo $comment_row['user_id']; ?>);">delete</span></p>
        <?php  ?>
    </div>
<?php  ?>

【问题讨论】:

Comment.php 代码与问题无关,我不认为。如果不是,只需将其删除,以便读者更清洁 我不知道这是否是问题,但post_id='$_GET[post_id]' 应该是post_id='$_GET[post_id]'post_id='$post_row[id]' 应该是post_id='$post_row[id]' 问题在于innerHTML,它只替换了第一条评论.. 【参考方案1】:

您的第一个代码 sn-p 正在为 每个 注释创建一个单独的 comments_div。那么你的 javascript 代码 sn-p 只是替换了第一个的内容。

您可以通过将comments_div 外部 放在 PHP while 循环中来修复它,然后在该循​​环中使用与第三个示例相同的 HTML 输出代码(@ 987654324@ 每条评论)。

所以,用这样的东西代替第一个代码 sn-p:

<div id="comments_div">
<?php
$comment_qry = mysqli_query($conn, "SELECT * FROM comments WHERE post_id='$post_row[id]' ORDER BY id DESC");
while($comment_row = mysqli_fetch_array($comment_qry)) 
?>
    <div style="background:#aaaaaa; margin:5px;" class="comment">
        <p onclick="report_var(<?php echo $post_row['id']; ?>, <?php echo $comment_row['user_id']; ?>);">report</p>
        <p>user: <?php echo $comment_row['user_id']; ?></p>
        <p>date: <?php echo date("Y-m-d", $comment_row['date']); ?></p> 
        <p>content: <?php echo $comment_row['content']; ?></p>
        <?php if($_GET['poster_id'] == $my_id or $comment_row['user_id'] == $my_id or $admin == 1) ?>
             <p><span onclick="comment_remove(<?php echo $comment_row['id']; ?>, <?php echo $comment_row['user_id']; ?>);">delete</span></p>
        <?php  ?>
    </div>
<?php  ?>
</div>

【讨论】:

以上是关于清除和更改 div 的内容的主要内容,如果未能解决你的问题,请参考以下文章

伪类常见用法及动态更改内容样式的方法

清除内容可编辑的div时键盘在Safari iOS 6中停止工作

如果单元格更改,清除内容离开公式

如何在没有 innerHTML = ""; 的情况下清除 div 的内容

JQuery,如何清除,除了点击的元素以外,其他所有元素

如何清除父 <div> 中所有 <div> 的内容?