Fredo: getElementsByTagName is not defined

Hallo ich hab ein problem:

und zwar hab ich eine <ul>, die durch appendChild
ein <li>-Element einbindet..

Jetzt will ich dieses element durch replaceChild überschreiben.

allergings findet der jetzt nicht dieses <li>-Element.

Hier mal der Quelltext-Ausschnitt:

...

dritter_Intervall = window.setInterval("status()", 100);

z = 1;
text = document.createTextNode( z + "%" );
laden = document.createElement("li");
document.getElementsTagName("ul")[2].appendChild(laden);
document.getElementsByTagName("li")[0].appendChild(text);
alert(getElementByTagName("li")[0]);

function status() {
z++;
text2 = document.createTextNode( z + "%");
document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);
if ( z >= 100 ) {
window.clearInterval(dritter_Interval);
}/*if beenden*/

}/*status beenden*/

...

  1. document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);

    ---------------------^

    Das findet der nicht

    1. document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);
      ---------------------^

      Das findet der nicht

      sry vertan

      document.getElementsByTagName("li")[0].replaceChild(text2,

      getElementsTagName("li")[3].firstChild);
      -------------------^

      dieses

  2. Lieber Fredo,

    da sehe ich aber was...:

    z = 1;
    text = document.createTextNode( z + "%" );
    laden = document.createElement("li");
    document.getElementsTagName("ul")[2].appendChild(laden);

    ^^^^^^???

    document.getElementsByTagName("li")[0].appendChild(text);
    alert(getElementByTagName("li")[0]);

    ^^        ^^ ?? document.getElementsByTagName()!

    function status() {
    z++;
    text2 = document.createTextNode( z + "%");
    document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);

    ^^         ^^ siehe oben...

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. document.getElementsTagName("ul")[2].appendChild(laden);
                           ^^^^^^???

      was ist denn da??

      alert(getElementByTagName("li")[0]);
             ^^        ^^ ?? document.getElementsByTagName()!

      kannste vergessen!! nur zur probe

      document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);
                                                                  ^^         ^^ siehe oben...

      was denn??
      MfG Fredo

      1. Hi,

        document.getElementsTagName("ul")[2].appendChild(laden);
                             ^^^^^^???
        was ist denn da??

        Da fehlt was. Es muss getElementsByTagName heißen.

        mfG,
        steckl

        1. Da fehlt was. Es muss getElementsByTagName heißen.

          bin ich blöd!!

          1. die fehlerkonsole zeigt troztdem hier fehler:

            1.document.getElementsByTagName("ul")[2].appendChild(laden);

            2.document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);

            1. Hi,

              die fehlerkonsole zeigt troztdem hier fehler:

              und welche?

              1.document.getElementsByTagName("ul")[2].appendChild(laden);

              Was ist "laden"?

              2.document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);

              Was ist "text2"?

              mfG,
              steckl

              1. 1.document.getElementsByTagName("ul")[2].appendChild(laden);
                Was ist "laden"?

                laden = document.createElement("li");

                2.document.getElementsByTagName("li")[0].replaceChild(text2, getElementsTagName("li")[3].firstChild);
                Was ist "text2"?

                text2 = document.createTextNode( z + "%");

                fehlerkonsole: getElementsTagName("li")[3] is not defined!

                Fredo

                1. Hi,

                  fehlerkonsole: getElementsTagName("li")[3] is not defined!

                  Siehe hier.

                  mfG,
                  steckl

                  1. Ja gut das ist ja nur flüchtigkeit und der andere??

                    MfG Fredo

                    1. Hi,

                      Ja gut das ist ja nur flüchtigkeit und der andere??

                      In der anderen Zeile steht das gleiche.

                      Noch ein Tipp: Lass es für heute gut sein und leg dich ne Runde schlafen. ;-)

                      mfG,
                      steckl

                      1. ICh glaub du hast dich vertan..

                        da steht:
                        document.getElementsByTagName("ul")[2].appendChild(laden);

                        und

                        document.getElementsByTagName("li")[3].replaceChild(text2, getElementsByTagName("li")[3].firstChild);

                        und die fehlerkonsole sagt zu beiden:

                        has no properties?!

                        MfG Fredo

                        1. Hi,

                          ICh glaub du hast dich vertan..

                          Oben stands noch anders.

                          da steht:
                          document.getElementsByTagName("ul")[2].appendChild(laden);

                          Gibt es denn 2 ul-Tags?

                          und

                          document.getElementsByTagName("li")[3].replaceChild(text2, getElementsByTagName("li")[3].firstChild);

                          Und hier 3 li-tags?

                          und die fehlerkonsole sagt zu beiden:

                          has no properties?!

                          mfG,
                          steckl

                          1. document.getElementsByTagName("ul")[2].appendChild(laden);
                            Gibt es denn 2 ul-Tags?

                            3!!

                            document.getElementsByTagName("li")[3].replaceChild(text2, getElementsByTagName("li")[3].firstChild);
                            Und hier 3 li-tags?

                            4!!

                            1. hier mal der quelltext(schon ein bischen verändert):
                              <html>
                              <head><title>dynamische Seite</title>
                              <style type="text/css">
                              ul#header {
                              border:medium double gray;
                              position:absolute;
                              top:1em;
                              left:2.5em;
                              background-image:url(header.jpg);
                              }

                              ul#navigation {
                              border:medium double gray;
                              border-top:0px solid white;
                              position:absolute;
                              top:9em;
                              left:2.5em;
                              width:0em;
                              height:0em;
                              overflow:hidden;
                              background:url(paris.jpg) no-repeat;
                              background-position:center center;

                              text-align:center;
                              }

                              ul#navigation li {
                              padding:0.5em;
                              color:red;
                              }

                              ul#prozent  {
                              position:absolute;
                              top:20em;
                              left:25em;
                              list-style:none;
                              }

                              </style>
                              <script type="text/javascript">

                              var breite_header = 0;
                              var höhe_header = 0;
                              var breite_navigation = 0;
                              var höhe_navigation = 0;
                              var a = 1;
                              var i = 1;

                              var erster_Intervall = window.setInterval("header()", 10);

                              function header() {

                              document.getElementById("header").style.width = breite_header +"em";
                              document.getElementById("header").style.height = höhe_header + "em";
                              a++;
                              breite_header = breite_header + 1.15;
                              höhe_header = höhe_header + 0.16;

                              if ( a >= 50 ) {
                              window.clearInterval(erster_Intervall);
                               zweiter_Intervall = window.setInterval("navigation()", 10);
                              }/*if beenden*/

                              }/*header() beenden*/

                              function navigation() {
                              document.getElementById("navigation").style.width = breite_navigation + "em";
                              document.getElementById("navigation").style.height = höhe_navigation + "em";
                              i++;
                              breite_navigation = breite_navigation + 0.15;
                              höhe_navigation = höhe_navigation + 0.6;
                              if ( i >= 50 ) {
                              window.clearInterval(zweiter_Intervall);
                               dritter_Intervall = window.setInterval("status()", 100);
                              }/*if beenden*/

                              }/*navigation() beenden__________________________________________________________________________*/

                              z = 1;
                              text = document.createTextNode( z + "%" );
                              laden = document.createElement("li");
                              document.getElementsByTagName("ul")[2].appendChild(laden);
                              document.getElementsByTagName("li")[0].appendChild(text);
                              alert(getElementsByTagName("li")[0]);
                              function status() {
                              z++;
                              text2 = document.createTextNode( z + "%");
                              document.getElementsByTagName("ul")[2].replaceChild(text2, getElementsByTagName("li")[3].firstChild);
                              if ( z >= 100 ) {
                              window.clearInterval(dritter_Interval);
                              }/*if beenden*/

                              }/*status beenden*/
                              </script>
                              </head>
                              <body>
                              <ul id="header">
                              </ul>

                              <ul id="navigation">
                              <li></li>
                              <li>1</li>
                              <li>2</li>
                              </ul>

                              <ul id="prozent">
                              </ul>

                              </body></html>

                              1. hier mal der quelltext(schon ein bischen verändert):

                                Dein Code steckt voller Unsauberkeiten.
                                Die Fehlermeldungen stammen von Tippfehlern und vergessenen Objekten. Dann gibt es eine Menge globaler Variabeln, seltsame Verschachtelungen deiner Zugriffe. Mir ist nicht ganz klar was du erreichen willst mit replaceChild. Du ersetzt ja die LI Elemente, d.h. sie sind dann nicht mehr da.

                                Struppi.

                                --
                                Javascript ist toll (Perl auch!)
                                1. Mir ist nicht ganz klar was du erreichen willst mit replaceChild.
                                  ich will, dass sich der wert des elementes ändert!!

                                  Du ersetzt ja die LI Elemente, d.h. sie sind dann nicht mehr da.
                                  aber ich überschrieb doch nur das heißt sie sind sofort wieder da oder nicht??

                                  1. Mir ist nicht ganz klar was du erreichen willst mit replaceChild.
                                    ich will, dass sich der wert des elementes ändert!!

                                    Wer hat hier was geschrieben? Bitte lass die Zitatzeichen stehen.

                                    Du ersetzt ja die LI Elemente, d.h. sie sind dann nicht mehr da.
                                    aber ich überschrieb doch nur das heißt sie sind sofort wieder da oder nicht??

                                    Nein, du ersetzt ein Element mit einem anderen. D.h. das li Element ist weg.

                                    Struppi.

                                    --
                                    Javascript ist toll (Perl auch!)
                                    1. Nein, du ersetzt ein Element mit einem anderen. D.h. das li Element ist weg.

                                      ursprünglich wollte er Texte der li-Elemente tauschen ...

                                      document.getElementsByTagName("li")[3].replaceChild(text2, getElementsByTagName("li")[3].firstChild);

                                      ^^^^^^^^
                                      document.getElementsByTagName("li")[3].replaceChild(text2, document.getElementsByTagName("li")[3].firstChild);

                                      jetzt geht es natürlich ganz ins Wilde, wenn ul und li gemixt werden.

                                      document.getElementsByTagName("ul")[2].replaceChild(text2, getElementsByTagName("li")[3].firstChild);

                                      Fraglich ist, ob jedes li-Element auch einen Text hat, ob li-firstChild existiert ....

                                      Gruß planB

                              2. Hi,

                                hier mal der quelltext(schon ein bischen verändert):

                                Bisschen hättest du schon noch kürzen können ;-)

                                Du rufst dein Javascript auf, bevor der Quellcode fertig geladen ist und zu dem Zeitpunkt gibt es die Elemente die du ansprichst anscheinend noch nicht.

                                mfG,
                                steckl

                        2. hallo,

                          da steht:
                          document.getElementsByTagName("ul")[2].appendChild(laden);

                          gibt es wirklich 3 ul-Blöcke?

                          document.getElementsByTagName("li")[3].replaceChild(text2, getElementsByTagName("li")[3].firstChild);

                          document.getElementsByTagName("li")[3].replaceChild(text2, document.getElementsByTagName("li")[3].firstChild);

                          übersichtlicher wäre es, du würdest dich immer nur um einen ul-Block kümmern, z.B.:

                          var ul2=document.getElementsByTagName("ul")[2];
                          ul2.appendChild(laden);

                          und dann die zugehörigen li-Elemente

                          var lis=ul2.getElementsByTagName("li");

                          if {lis.length>3)
                            lis[3].replaceChild(text2,lis[3].firstChild);
                          else
                            alert( "lis.length: "+lis.length);

                          so kannst du evtl einen falschen Index aufspüren.

                          Gruß planB

                          1. danke

                            probier ich mal

                          2. ol2 = document.getElementsByTagName("ol")[0];

                            <body>
                            <ul id="header">
                            </ul>

                            <ul id="navigation">
                            <li></li>
                            <li>1</li>
                            <li>2</li>
                            </ul>

                            <ol id="prozent">
                            </ol>

                            </body>

                            warum no properties???

                            1. warum no properties???

                              Weil Javascript nicht hellsehen kann.

                              Struppi.

                              --
                              Javascript ist toll (Perl auch!)
  3. Hallo ich hab ein problem:

    und zwar hab ich eine <ul>, die durch appendChild
    ein <li>-Element einbindet..

    Jetzt will ich dieses element durch replaceChild überschreiben.

    allergings findet der jetzt nicht dieses <li>-Element.

    Hier mal der Quelltext-Ausschnitt:

    ...

    dritter_Intervall = window.setInterval("status()", 100);

    z = 1;
    text = document.createTextNode( z + "%" );

    // Referenz auf Textknoten

    laden = document.createElement("li");

    // Zeiger "laden" füllen mit Referenz auf erzeugtes Objekt LI-TAG

    document.getElementsTagName("ul")[2].appendChild(laden);

    // .appendChild(laden)   Objekt LI in HTML-DOM anhängen an ein Objekt
    //                       appendChild ist Funktion von Objekt ....[2]
    //                          wegen Punktnotation
    // document.getElementsByTagName() .... Zeiger auf ein Objekt liefern
    //     Funktionswert wird nicht angefordert, also Objektzeiger
    //       nicht als Referenz gespeichert, also append an einen
    //       nicht vorhandenen Zeiger
    //     Funktionssyntax beachten: function()[2]   also
    //                                 Funktionsaufruf mit Array-Index

    Gruss Tom