Daniel N.: Verständnis-Problem bei "node"

Hallo,

ich glaube, dass ich das node-Objekt bzw. dessen Verwendung noch nicht ganz verstanden habe, folgendes Beispiel:

<ul id="testUl">
    <li><a href="test1.html">Test 1</a></li>
    <li><a href="test2.html">Test 2</a></li>
    <li><a href="test3.html">Test 3</a></li>
</ul>

In einem Skript möchte ich nun <a> ansprechen:

var testUl= document.getElementById("testUl");
   var erstesLi = testUl.firstChild;
   var aInLi = erstesLi.fistChild;

Ich dachte "aInlI" wäre nun das "firstChild"!
Ich möchte auf <a> Eigenschaften ändern.

Was mache ich falsch und wo ist der Denkfehler?

Vielen Dank für eure Hilfe
Daniel :-)

  1. Hallo Daniel,

    <ul id="testUl">

    schau mal hier_____^^

    <li><a href="test1.html">Test 1</a></li>
        <li><a href="test2.html">Test 2</a></li>
        <li><a href="test3.html">Test 3</a></li>
    </ul>

    Für den IE unter Windows müsste das so stimmen, wie du es schreibst, die anderen Browser, ich glaube auch der IE am Mac interpretieren einen Umbruch im Quellcode als eigenen Textnode. Da ist das erste List-Item dann also nicht firstChild, sondern childNodes[1], das zweite nicht childNodes[1] sondern childNodes[4] usw.

    Gruß Gernot

    1. Hallo nochmal,

      (...) das zweite nicht childNodes[1] sondern childNodes[4] usw.

      Sorry, bin gerade selbst ducheinandergekommen childNodes[3] natürlich!

      Gruß Gernot

      1. Hi Gernot,

        mit deiner Lösung klappt es.

        Aber richtig zufriedenstellend ist die Lösung für mich noch nicht.
        Ich möchte eigentlich nicht die Umbrüche zählen.

        Gibt es nicht eine elegante Lösung, um von einem <ul>-Element an dessen <li>-Elemente zu kommen?

        Viele Grüße
        Daniel

        1. Hallo,

          mit deiner Lösung klappt es.
          Gibt es nicht eine elegante Lösung, um von einem <ul>-Element an dessen <li>-Elemente zu kommen?

          Ja, mit NODE.getElementsByTagName("LI")[0];
          aber Du willst doch eigentlich das erste A-Element im UL-Element.

          var testUl= document.getElementById("testUl");
             var erstesLi = testUl.getElementsByTagName("A")[0];

          Oder vom gesamten Dokument ausgehend

          var erstesLi = document.links[0];

          viele Grüße

          Axel

          1. Hallo Axel,

            Deine Lösung ist viel eleganter, werde ich mir selbst aneignen!

            Gruß Gernot

        2. Hallo Daniel,

          Gibt es nicht eine elegante Lösung, um von einem <ul>-Element an dessen <li>-Elemente zu kommen?

          Du kannst dir ja mal mein Klappmenü anschauen. Dort habe ich es mit einem Conditional Comment sowie einer if-Abfrage if(childNodes[i].nodeName!='#text') gelöst.

          Gruß Gernot