Elemente ("Unterobjekte") via for-Schleife auslesen
norman
- javascript
0 Gunnar Bittersmann0 norman
2 molily0 norman
0 Siechfred
Hallo!
ich gebe auf! Folgendes Problem:
HTML-Code:
<div id="1">
<table>...</table>
<div id="1_1">
<div id="1_1_1">bla</div>
<div id="1_1_2">bla</div>
</div>
<div id="1_2">bla</div>
</div>
<div id="2">
<table>...</table>
<div id="2_1">
<div id="2_1_1">bla</div>
<div id="2_1_2">bla</div>
</div>
<div id="2_2">bla</div>
</div>
Z.B. sollen alle "div's" unter dem "<div id="2">"-Zweig bearbeitet werden. Wie kann ich durch diesen Baum gehen und die einzelnen "divs" bearbeiten?
Etwa so sollte es aussehen, JS-Code:
var note = document.getElementById("2");
for(var x=0;x<note.length;x++){
if(note[x].nodeName == "div") {
alert("mach was!");
}
}
Habt ihr ne Idee?
Gruß,
Norman
norman,
HTML-Code:
Der krankt schwer an Divitis.
<div id="1">
Fehler: ungültiger Bezeichner für IDs.
alert("mach was!");
Was soll da gemacht werden? Vielleicht ginge das auch ohne JavaScript?
Live long and prosper,
Gunnar
Hi Gunnar,
wieso ist die ID ungültig? MSIE und Firefox arbeiten sehr gut damit.
Bei "mach was" wird sehr viel JS-Code angestoßen (mit AJAX).
Gruß,
norman
wieso ist die ID ungültig?
norman,
Das verät dir die HTML 4.01-Spezifikation, Abschnitt 7.5.2 Element-Identifikatoren: das id- und das class-Attribut, dem Link name folgen.
Auch in SELFHTML ist es zu finden: ID, IDREF oder Name.
MSIE und Firefox arbeiten sehr gut damit.
Irrelevant. Es ist ein Fehler; und du kannst nicht davon ausgehen, dass alle Browser gleichermaßen fehlertolerant sind.
Live long and prosper,
Gunnar
Hi Gunnar,
ok, das werde ich dann ändern...
hast du ne Idee wie die div's durchlaufen werden können?
Gruß,
norman
Hallo,
<div id="2">
<table>...</table>
<div id="2_1">
<div id="2_1_1">bla</div>
<div id="2_1_2">bla</div>
</div>
<div id="2_2">bla</div>
</div>Z.B. sollen alle "div's" unter dem "<div id="2">"-Zweig bearbeitet werden. Wie kann ich durch diesen Baum gehen und die einzelnen "divs" bearbeiten?
Das geht mit getElementsByTagName als Methode eines Knotenobjekts. Liefert dir alle Kindelemente eines bestimmten Typs auf allen darunter liegenden Hierarchie-Ebenen.
var divs = document.getElementById("id").getElementsByTagName("div");
for (var i=0; i < divs.length; i++) {
alert(divs[i]);
}
Mathias
hi mathias,
sehr hilfreich! danke.
gruß,
norman
Tag norman.
Z.B. sollen alle "div's" unter dem "<div id="2">"-Zweig bearbeitet werden. Wie kann ich durch diesen Baum gehen und die einzelnen "divs" bearbeiten?
Dein Ansatz ist schon mal nicht der Schlechteste.
var note = document.getElementById("2");
Gut, hier haben wir nun eine Objektreferenz auf das DIV mit der ID "2". Wie du allerdings auf die Idee kommst, dass es sich um eine Kollektion handeln könnte, ist mir ein Rätsel (siehe getElementById).
Habt ihr ne Idee?
Ja, Rekursion verbunden mit der childNodes-Collection und der hasChildNodes-Methode.
Siechfred