ich mehr div-Elemente mit gleicher ID habe = 'mydiv'.I will diese divs und Iam mit dem CodeBerechnen Sie die Anzahl von HTML-Elemente mit js
document.getElementById('mydiv').length
berechnen Aber es funktioniert nicht
ich mehr div-Elemente mit gleicher ID habe = 'mydiv'.I will diese divs und Iam mit dem CodeBerechnen Sie die Anzahl von HTML-Elemente mit js
document.getElementById('mydiv').length
berechnen Aber es funktioniert nicht
Es wird nicht so getElementById
funktionieren wird immer ein Element mit der angegebenen ID und null zurück, wenn die angegebenen ID nicht
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)
Was Sie tun sollten, ist Klasse anstelle von IDs zu verwenden. ID ist nur für ein Element, Klasse ist für mehrere Elemente.
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;
}
Nun, nicht ** immer **. Wenn kein übereinstimmendes Element gefunden werden kann, wird 'null' zurückgegeben. ;-) – RobG
@RobG danke für den Hinweis, Sir –