2012-04-13 9 views

Antwort

1

Es wird nicht so getElementById funktionieren wird immer ein Element mit der angegebenen ID und null zurück, wenn die angegebenen ID nicht

existiert

Von ECMA

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

Was Sie kann tun, ist jedes Div mit Klasse

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

Und iterieren:

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

alert(count); 

Wenn Ihre Kunden document.getElementsByClassName() unterstützen, ist es noch prägnanter:

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

Nun, nicht ** immer **. Wenn kein übereinstimmendes Element gefunden werden kann, wird 'null' zurückgegeben. ;-) – RobG

+0

@RobG danke für den Hinweis, Sir –

4

Was Sie tun sollten, ist Klasse anstelle von IDs zu verwenden. ID ist nur für ein Element, Klasse ist für mehrere Elemente.

http://jsfiddle.net/d7AHV/

0

Sie haben über mehrere Elemente mit der gleichen ID gesagt worden, aber in seltenen Fällen könnte es unvermeidlich sein (z. B. ein XML-Dokument, über das Sie keine Kontrolle haben). Das einzige nachteilige Verhalten ist, dass die Auswahl nach ID normalerweise nur die erste zurückgibt (aber das ist nicht garantiert).

Sie können Elemente mit derselben ID zählen, indem Sie alle Elemente im Dokument durchlaufen und diejenigen mit einer passenden ID zählen, z.

function countSameIds(id) { 
    var allNodes = document.getElementsByTagName('*'); 
    for (var i=allNodes.length, count=0; i;) { 
    if (allNodes[--i].id == id) { 
     ++count; 
    } 
    } 
    return count; 
} 
Verwandte Themen