2016-11-01 8 views
-2

foreachループを使用して、異なるIDを持つタブを取得します。この方法では、ids tab1、tab2、tab3などでタブを取得します。javascriptを使用して各タブのIDを取得する場合は、最初のタブのIDのみを返し、すべてのタブでこれを使用します。 PHPのようにループしません。どうして?Javascriptは、foreachループの最初のIDのみを取得します。どうして?

<?php 
foreach ($DB_con->query($foos) as $foo) { 
    ?> 
    <div id='tab<?php echo $counter_foo; ?>'> 

    <div id="divid" style="visibility: hidden"><?php echo $counter_foo; ?></div> 
    <script> 
    $(document).ready(function() { 
     var dividvalue = document.getElementById('divid').innerHTML; 
     alert(dividvalue); 
    }); 
    </script> 
    <?php 
} 
?> 
+5

**一意である、とあなたが複数の同一のIDを出力しているので、最初のものだけが今までに返されます。 getElement()ByID –

+0

[__Thereは、同じ 'id'値を持つ' document'内の複数の 'elements 'であってはいけません.____](https://www.w3.org /TR/html-markup/global-attributes.html#common.attrs.id) – Rayon

+0

申し訳ありませんが誤解した場合、id = "tab1"、id = "tab2"、id = "tab3"などのように異なるIDが表示されます。)phpを使って。それが私がforeachループを使う理由です。 「複数の同一IDを出力する」とはどういう意味ですか? –

答えて

0

変更classにあなたのHTMLでid、およびJavaScriptでgetElementsByClassName代わりのgetElementByIdあなたを使用しています。

あなたのdiv:

<div class="divid"> <!-- etc --> 

とあなたのJS ...

var dividvalue = document.getElementsByClassName('divid')[0].innerHTML; 

はまた、一貫性のためにdivclassdividを変更することを検討してください。

完全に編集コード:通常、DOMのid ** MUSTあたりとして

<script> 
var i = 0; 
</script> 
<?php 
foreach ($DB_con->query($foos) as $foo) { 
    ?> 
    <div id='tab<?php echo $counter_foo; ?>'> 

    <div class="divclass" style="visibility: hidden"><?php echo $counter_foo; ?></div> 
    <script> 
    $(document).ready(function() { 
     var divclassvalue = document.getElementsByClassName('divclass')[i].innerHTML; 
     alert(divclassvalue); 
     i++; 
    }); 
    </script> 
    <?php 
} 
?> 
+0

返信いただきありがとうございますが、localhostには "undefined"と書かれています! –

+0

コードを使用しています。var dividvalvalue = document.getElementsByClassName( 'divid')[0] .innerHTML;私は未定義の結果は得られません:-)しかし、問題はまだ同じです:私は常に最初のIDを取得! –

+0

私は完全なコードで答えを更新しました。それを試してください。 –

関連する問題