无法在javascript里面获取元素id for循环

时间:2016-04-20 10:17:55

标签: javascript php jquery html

我正在尝试在循环中使用getElementById()作为我想要得到的每个div的id顺序如total_comments1,total_comments2,total_comments3,..等等。这个id由输出使用php分配。

这是我显示我的div的代码:

<?php
    $i=0;
    while( $row = mysqli_fetch_assoc($ret) ):
        $i++;
    ?>
        <tr>
            <td class="col3 col">
                <div id="<?php echo "total_comments".$i ?>"></div>
            </td>
        </tr>
   

这是我的javascript代码:

<script>
    for(var i in (result.response)) {
        var a=document.getElementById("total_comments" + i );
        a.innerHTML = result.response[i].posts;
    }
</script>

当我在document.getElementBy ID中仅使用“total_posts”时,它不会给出任何错误。但是当我使用“total_posts”+ i 时,它会在下一行给出错误。 无法设置null

的属性'innerHTML'

2 个答案:

答案 0 :(得分:5)

数组具有0的起始索引。

在您的情况下,您在分配前递增$i

这会导致您的ID从1而不是0

开始

分配后你应该增加它。

更正后的代码:

<?php
$i=0;
while ($row = mysqli_fetch_assoc($ret)):
?>
 <tr>
  <td class="col3 col">
   <div id="<?php echo "total_comments".$i ?>"></div>
  </td>
 </tr>
<?php
 $i++;
endwhile;
?>

答案 1 :(得分:2)

问题在于你的php周期,尝试改变它:

<?php
  $i=0;
  while($row = mysqli_fetch_assoc($ret) {
    echo '<tr><td class="col3 col">'
      .'<div id="total_comments'.$i.'"></div>'
      .'</td></tr>';
    $i++;
  }
?>