Ich bin sicher, das ist einfach, aber ich habe keine Ahnung, wie es geht. Wie zähle ich die Anzahl der DOM-Elemente in meiner HTML-Seite? Ich wollte dies in einem Userscript oder Bookmarklet tun, aber ich habe keine Ahnung, wie ich anfangen soll!Firefox Oder JavaScript, zählen Sie das DOM
Antwort
verwenden für Element
Knoten:
document.getElementsByTagName("*").length
Für jeden Knoten können Sie Node
wie folgt erweitern:
Node.prototype.countChildNodes = function() {
return this.hasChildNodes()
? Array.prototype.slice.apply(this.childNodes).map(function(el) {
return 1 + el.countChildNodes();
}).reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
})
: 0;
};
Dann alles, was Sie tun müssen, ist document.countChildNodes
zu nennen.
Gibt es eine Möglichkeit, die Anzahl der Elemente in Iframes hinzuzufügen? – corretge
@correge Das wäre möglich, wenn Sie Zugriff auf das 'contentDocument' haben. Wiederholen Sie einfach die Elemente, die Sie mit 'document.getElementsByTagName (" * ") erhalten' 'und zählen Sie sie als 1 und für jeden' iframe' Elementknoten ('tagName === 'IFRAME'') fügen Sie die Anzahl der Elemente in seinem' contentDocument hinzu 'stattdessen. – Gumbo
Vielen Dank! Ich habe ein anderes "kleines" Problem: Domains, Protokolle und Ports müssen übereinstimmen. Normal :) – corretge
// Sie die gleiche Methode verwenden, um die Anzahl der jedes Tag zu bekommen, wenn es
zähltfunction tagcensus(pa){
pa= pa || document;
var O= {},
A= [], tag, D= pa.getElementsByTagName('*');
D= A.slice.apply(D, [0, D.length]);
while(D.length){
tag= D.shift().tagName.toLowerCase();
if(!O[tag]) O[tag]= 0;
O[tag]+= 1;
}
for(var p in O){
A[A.length]= p+': '+O[p];
}
A.sort(function(a, b){
a= a.split(':')[1]*1;
b= b.split(':')[1]*1;
return b-a;
});
return A.join(', ');
}
alert (tagcensus())
In JavaScript können Sie tun
document.getElementsByTagName("*").length
In jQuery können Sie tun
jQuery('*').length
Möchten Sie wissen, welche DOM-Knoten oder DOM-Knoten HTML-Elemente sind? Das DOM enthält Dinge wie Text, Kommentare und Attribute als Knoten. – edeverett