Bud Gerlad: Listenelement ersetzen funktioniert nicht

Hallo Leute,

ich habe ein Problem, aber ich werde meine Frage auf das nötigste reduzieren. Und zwar:

ich habe ein Array im HTML Dokument:

"var TextArray = new Array();"

In das Array speichere ich Strings. Sie werden auch tatsächlich gespeichert - ich habe es überprüft. Nun möchte ich ein Element aus diesem Array z.B. einem Listenobjekt zu ordnen, ungefähr so:

"document.getElementsByTagName("li")[0].firstChild.nodeValue = TextArray[1];"

Das Listenelement will ich sozusagen mit dem Arrayelement ersetzten. Leider bekomme ich im Listenelement "undefined" angezeigt.

Was ich wirklich niht verstehe und was meine Frage ist:

"document.getElementsByTagName("li")[0].firstChild.nodeValue = "Hallo"" funktioniert aber ein Element aus dem Array was eigentich auch ein String ist, funktioniert nicht. Warum nicht bzw. muss ich was anderes schreiben als "document.getElementsByTagName("li")[0].firstChild.nodeValue"?

Ich sitze schon seit 4 Stunden daran und wäre dankbar auf eine Antwort oder idee.

MfG

Bud

  1. Hi,

    In das Array speichere ich Strings. Sie werden auch tatsächlich gespeichert - ich habe es überprüft.

    wo bzw. wann hast Du es überprüft?

    "document.getElementsByTagName("li")[0].firstChild.nodeValue = TextArray[1];"

    Was passiert, wenn Du alles von "document" bis "=" durch "alert(" und das abschließende Semikolon durch ");" ersetzt?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      In das Array speichere ich Strings. Sie werden auch tatsächlich gespeichert - ich habe es überprüft.

      wo bzw. wann hast Du es überprüft?

      "document.getElementsByTagName("li")[0].firstChild.nodeValue = TextArray[1];"

      Was passiert, wenn Du alles von "document" bis "=" durch "alert(" und das abschließende Semikolon durch ");" ersetzt?

      Cheatah

      Wenn ich das mache was du sagst, kommt natürlich den Text angezeigt. Wenn ich die Semikolon entferne bekomme ich ein popupfenster angezeigt mit undefinied.

      ich tue mal den kompletten quellcode rein, dann könnt ihr mein Problem besser nachvollziehen:

      <html>
      <head>
      <title>test</title>
      <script type="text/javascript">

      TextArray = new Array();
      var i = 0;

      while (i < document.getElementsByTagName("li").lenght) {
       TextArray[i] = document.getElementsByTagName("li")[i].firstChild.nodeValue;
       i++;
      }

      function Wechsel()
      {
       //alert("TextArray[2];")
       document.getElementsByTagName("li")[1].firstChild.nodeValue = TextArray[2];
      }

      function Start()
      {
       document.all.style1.style.color = "blue";
       document.all.style2.style.color = "red";
       document.all.style3.style.color = "yellow";
       document.all.style4.style.color = "green";
      }

      </script>
      </head>
      <body onLoad="Start()">

      <ol>
       <li id="style1">Text1</li>
       <li id="style2">Text2</li>
       <li id="style3">Text3</li>
       <li id="style4">Text4</li>
      </ol>

      <a href="javascript:Wechsel()">Methode1</a>

      </body>
      </html>

      1. nachtrag:

        ich habe natürlich var "TextArray = new Array();" stehen statt "TextArray = new Array();". hatte es nur kurz weg gemacht zum testen

        MfG

        Bud

      2. Moin

        wenn dein JavaScript dies abarbeitet:

        while (i < document.getElementsByTagName("li").lenght) {
        TextArray[i] = document.getElementsByTagName("li")[i].firstChild.nodeValue;
        i++;
        }

        existiert noch kein li, denn die werden erst hier:

        <ol>
        <li id="style1">Text1</li>
        <li id="style2">Text2</li>
        <li id="style3">Text3</li>
        <li id="style4">Text4</li>
        </ol>

        erschaffen.

        Setz also deine while-Schleife (besser noch eine for-Schleife) mit in die start-Funktion.

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
        1. Moin

          wenn dein JavaScript dies abarbeitet:

          while (i < document.getElementsByTagName("li").lenght) {
          TextArray[i] = document.getElementsByTagName("li")[i].firstChild.nodeValue;
          i++;
          }

          existiert noch kein li, denn die werden erst hier:

          <ol>
          <li id="style1">Text1</li>
          <li id="style2">Text2</li>
          <li id="style3">Text3</li>
          <li id="style4">Text4</li>
          </ol>
          erschaffen.

          Setz also deine while-Schleife (besser noch eine for-Schleife) mit in die start-Funktion.

          Gruß
          rfb

          Du hast recht. Wenn die Schleife abgearbeitet wird gibs die Elemente noch nicht. Ich habe jetzt das Array Global direkt am anfang deklariert und initialisiert aber die Schleife an sich wird erst mit dem Button gestartet. Danke für den Tip. Es lohnt sich wieder zu leben ;-)

          Vielen dank..

          Gruß

          Bud

  2. Hello out there!

    aber ein Element aus dem Array was eigentich auch ein String ist, funktioniert nicht.

    Doch.

    muss ich was anderes schreiben als "document.getElementsByTagName("li")[0].firstChild.nodeValue"?

    Nein.

    Aber was steht in TextArray[1] drin?

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)