2012-04-13 21 views

答えて

1

これは、指定されたIDがECMA

getElementById(elementId) This method returns a Element. The elementId 
    parameter is of type DOMString. 

から

存在しない場合は、必ず指定されたIDとヌルを持つ要素を返しますgetElementByIdとして動作しません。何各部門をクラスに割り当てることができます

<div class="mydiv"></div> 
<div class="mydiv"></div> 
<div class="mydiv"></div> 
<div class="mydiv"></div> 
<div class="mydiv"></div>​​​​​​​​​ 

そして、反復処理:

alert(document.getElementsByClassName('mydiv').length) 
+1

まあ、**常に**。一致する要素が見つからない場合は 'null 'を返します。 ;-) – RobG

+0

@RobGそれを指摘してくれてありがとう –

4

あなたがすべきことは、IDの代わりにクラスを使用することです。 IDは1つの要素のみであり、クラスは複数の要素です。

http://jsfiddle.net/d7AHV/

0

あなたは同じIDを持つ複数の要素について言われてきたが、まれにそれは可能性があります:

var divs = document.getElementsByTagName('div'); 
var count = 0; 
for(var i = 0; i < divs.length; i++) { 
    if(divs[i].className == 'mydiv') count++; 
} 

alert(count); 

をクライアントがdocument.getElementsByClassName()をサポートしている場合、それはさらに簡潔です避けられない(例えばコントロールを持たないXMLドキュメント)。唯一の不都合な動作は、通常、IDで選択すると最初のものだけが返されます(しかし、それは保証されません)。

同じIDを持つ要素を数えるには、ドキュメント内のすべての要素をループし、一致するIDを持つ要素を数えます。

function countSameIds(id) { 
    var allNodes = document.getElementsByTagName('*'); 
    for (var i=allNodes.length, count=0; i;) { 
    if (allNodes[--i].id == id) { 
     ++count; 
    } 
    } 
    return count; 
} 
関連する問題