Elemente nur 1 level unter dem aktuellen element per javascript
Ich brauche Zugriff auf den DOM-Baum und Holen Sie sich die Elemente nur 1 level unter dem aktuellen element.
Lesen Sie den folgenden code:
<div id="node">
<div id="a">
<div id="aa">
<div id="ab">
<div id="aba"></div>
</div>
</div>
</div>
<div id="b">
<div id="ba">
<div id="bb">
<div id="bba"></div>
</div>
</div>
</div>
<div id="c">
<div id="ca">
<div id="cb">
<div id="cba"></div>
</div>
</div>
</div>
</div>
Möchte ich, um die 3 Elemente "a", "b", "c" unter "Knoten". Was soll ich tun?
var Knoten = Knoten.getElementsByTagName("div") <---- bekomme ich alle divs aber nicht die 3 divs, die ich brauche.
var Knoten = Knoten.childNodes; <---- funktioniert im IE, aber FF enthält Text-Knoten
Weiß jemand, wie das problem zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie eine Funktion benutzen, die Regeln alle nicht-element-Knoten:
Ich würde empfehlen, die Sie Blick auf JQuery. Die Aufgabe, die Sie schauen, um zu tun, ist einfach in reines Javascript, aber wenn Sie tun, jede zusätzliche DOM-traversal, JQuery geht zu sparen Sie unzählige Stunden der frustration. Nicht nur das, sondern es funktioniert in allen Browsern und hat eine sehr gute "Dokument bereit" - Methode.
Dein problem gelöst mit JQuery sieht wie folgt aus:
Sieht es für ein beliebiges element mit der id "Knoten" gibt dann seine Kinder. In diesem Fall
children
ist ein JQuery-Kollektion Iteration mit einer for-Schleife. Zusätzlich konnte man Durchlaufen Sie diese mit der each () - Befehl.Dies ist einfacher als Sie denken:
..querySelectorAll
?Versuchen, diese (späte Antwort, aber kann nützlich sein für andere):
Ich denke Knoten.childNodes ist der richtige Ort, um zu starten. Sie könnte damit es funktioniert mit FF auch), test der nodeName (und möglicherweise nodeType) aller untergeordneten Knoten, die Sie erhalten, zu überspringen, text-Knoten.
Auch Sie vielleicht einen Blick auf einige javascript-Bibliothek wie Prototyp, die eine Menge nützliche Funktionen.
Habe ich etwas text, damit wir sehen können, dass es funktioniert, und JavaScript-Code hinzufügen "Hinzugefügt!" auf den Boden jedes der divs an der Basis:
JS:
HTML:
Meiner Meinung nach der einfachste Weg, dies zu tun ist, um eine Klasse name der
ersten Ebene untergeordneten Knoten:
dann verwenden Sie die Methode
getElementsByClassName
, also in diesem Fall: