2016-04-20 4 views
3

のために、私は私が取得したい私のそれぞれのdivのIDとしてループ内getElementByIdを()を使用しようとしています内のJavaScriptでtotal_comments1、total_comments2、total_comments3、様配列である要素のIDを取得し、することはできません。この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を使用すると、次の行にエラーが発生します。 ヌルの 'innerHTML'プロパティを設定できません。

+4

あなたはid属性ですされるかを確認するために生成されたHTMLを確認することができます値 –

+2

はループ内の 'i'の値も参照します –

+0

はい、divのid属性値を確認しました。彼らは私がtotal_comments1、total_comments2、... –

答えて

5

アレイの開始インデックスは0です。あなたのケースでは

、あなたは、割り当てる前に$iを増加しています。あなたのidを引き起こしている

0

あなたは割り当てた後、それをインクリメントする必要がありません1から始めます。

修正されたコード:

<?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; 
?> 
+0

あなたは私のPHPコードをもう一度読んでください。私は$ iを0に初期化して、ループの開始時にそれをインクリメントしています。 –

+0

@NiraliAcharya、私はあなたの質問を解決するためのアプローチを与えました。それは完璧であるか、それに従わなければならないという意味ではありません。それは私の観察だった。独自のコードを続行することができます。 – Pupil

+0

申し訳ありません。しかし、上記のように、ループ開始時に変数iをインクリメントしています。 –

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++; 
    } 
?> 
関連する問題