rekursiv alle Elemente ermitteln

JavaUncle

Mitglied
Hat hier jemand eine Idee warum folgendes nicht funktioniert?

Code:
var myEo = document.getElementsByTagName('body')[0];

function walk(eo, arr) {
    if(eo.firstChild) {
        var eoChild = eo.firstChild;
        while(eoChild) {
            if(eoChild.nodeType==1) { //elements only
                //go deeper
                walk(eoChild, arr);
            }
            eoChild.nextSibling;
        }
    }
}

walk(myEo);

Es ist ein echt sehr kleines Dokument, was ich da habe. Keine 50 Elemente. Der Browser hängt sich total auf.

Ich brauche eine Funktion, um von einem bestimmten Startpunkt aus alle Unterelemente, also Kindelemente, Kindeskindelemente, Kindeskindeskindelemente (usw) zu ermitteln.

Das geht soweit ich weis nur rekursiv. JavaScript bietet dafür standardmäßig nichts brauchbares. getElementsByTagName ist auf einen Tag beschränkt. all geht nur im IE...
 
Hi,

Code:
var myEo = document.getElementsByTagName('body')[0];

function walk(eo, arr) {
    if(eo.firstChild) {
        var eoChild = eo.firstChild;
        while(eoChild) {
            if(eoChild.nodeType==1) { //elements only
                //go deeper
                walk(eoChild, arr);
            }
            eoChild.nextSibling;
        }
    }
}

walk(myEo);

Weise eoChild auch den nächsten Knoten zu. Sonst läuft die Schleife ja endlos über den ersten Kindknoten von body.

Code:
eoChild = eoChild.nextSibling;

LG
 

Neue Beiträge

Zurück