norman: Elemente ("Unterobjekte") via for-Schleife auslesen

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

  1. 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

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
    1. 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

      1. 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

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
        1. Hi Gunnar,

          ok, das werde ich dann ändern...

          hast du ne Idee wie die div's durchlaufen werden können?

          Gruß,
          norman

  2. 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

    1. hi mathias,

      sehr hilfreich! danke.

      gruß,
      norman

  3. 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