schaichi: id-ändern

Hallo

Kann ich die "id" eines Elements durchnummerieren, wenn ich eine Liste mit Javascript und einer for-schleife "aufbaue".

z.b.:(Liste ohne Elemente im HTML-Bereich schon erchaffen)

for ( i = 0 ; i <= 50 ; i++ ) {
Listenelement = document.createElement("li");
Text = document.createTextNode("Element" + " " + i);
Listenelement.setAttribute("id", i);
Listenelement.appendChild(Text);
document.getElementsByTagName("ol")[0].appenChild(Listenelement);
}

Mach ich das so, dann haben alle Listenelemente id="50". Wie kann ich das denn anders machen ohne 50 variablen einzusetzen??

MfG schaichi

  1. Kann ich die "id" eines Elements durchnummerieren, wenn ich eine Liste mit Javascript und einer for-schleife "aufbaue".

    Ja. Beachte auch die Konventionen für ID-Attribute.

    Mach ich das so, dann haben alle Listenelemente id="50". Wie kann ich das denn anders machen ohne 50 variablen einzusetzen??

    Dein Code funktioniert so, wie er dasteht. Irgendwo muss ein anderer Fehler sein.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  2. Kann ich die "id" eines Elements durchnummerieren, wenn ich eine Liste mit Javascript und einer for-schleife "aufbaue".

    Wenn du die Elemente sowieso dynamisch baust wozu brauchst du die ID?

    Listenelement = document.createElement("li");

    hier hast du den Zugriff auf das Element.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Wenn du die Elemente sowieso dynamisch baust wozu brauchst du die ID?

      Ich will auf ein bestimmtes Element im nachhinein noch zugreifen können..

      also hab ich es auch schon so versucht:

      neuerLink.setAttribute("onclick", "navi(i)" );

      wobei navi() eine funktion ist, die bei bstimmten Element ein bestimmtest Bild öffnen soll...

      d.h. wenn i = 1 , dann url(bilder/1.jpg);
           wenn i = 2 , dann url(bilder/2.jpg); usw.

      MfG schaichi

      1. hi,

        neuerLink.setAttribute("onclick", "navi(i)" );

        neuerLink.onclick = navi;
        neuerLink.nummerDieIchBrauche = i;

        function navi() {
          alert(this.nummerDieIchBrauche);
        }

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          neuerLink.setAttribute("onclick", "navi(i)" );

          neuerLink.onclick = navi;
          neuerLink.nummerDieIchBrauche = i;

          function navi() {
            alert(this.nummerDieIchBrauche);
          }

          gruß,
          wahsaga

          Danke klappt super...

          MfG Schaichi

          1. Danke klappt super...

            Wenn du früher mit deinen Geheimnissen rausrücken würdest, könnte man dir auch leichter helfen (wie ich schon in dem anderen Thread bemäkelt habe)

            Struppi.

            --
            Javascript ist toll (Perl auch!)
  3. Hello out there!

    z.b.:(Liste ohne Elemente im HTML-Bereich schon erchaffen)

    Das ist dummerweise ungültiges HTML.

    for ( i = 0 ; i <= 50 ; i++ ) {
    Listenelement = document.createElement("li");
    Text = document.createTextNode("Element" + " " + i);

    Lokale Variablen wären hier angesagt:

    for ( var i = 0 ; i <= 50 ; i++ ) {  
      var Listenelement = document.createElement("li");  
      var Text = document.createTextNode("Element" + " " + i);
    

    Listenelement.setAttribute("id", i);

    Wozu setAttribute()? Und was [Siechfred] sagte.

    Listenelement.id = "Listenelement" + i;

    document.getElementsByTagName("ol")[0].appenChild(Listenelement);
    }

    Du willst dir 51 Mal den Elementbaum nach sämtlichen 'ol'-Elementen parsen, um an dein Objekt zu kommen?? Nein!! Das muss du nicht bei jedem Schleifendurchlauf neu tun; einmal reicht! Vor der Schleife:

    var Liste = document.getElementsByTagName("ol")[0];

    In der Schleife:

    Liste.appendChild(Listenelement);

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Listenelement.setAttribute("id", i);

      hat nichts verändert...

      Wozu setAttribute()? Und was [Siechfred] sagte.

      Listenelement.id = "Listenelement" + i;

      habs jetzt so gemacht:
      setAttribute("onclick", "navi(i)" );

      function navi(variable) {
      alert(variable);
      }

      zeigt immer 50?!

      Du willst dir 51 Mal den Elementbaum nach sämtlichen 'ol'-Elementen parsen, um an dein Objekt zu kommen?? Nein!! Das muss du nicht bei jedem Schleifendurchlauf neu tun; einmal reicht! Vor der Schleife:

      Macht das denn einen Unterschied??

      MFG schaichi

      1. Hello out there!

        habs jetzt so gemacht:
        setAttribute("onclick", "navi(i)" );

        function navi(variable) {
        alert(variable);
        }

        zeigt immer 50?!

        Ja, na sicher. Wann feuert denn 'onclick'? Nicht etwa lange NACH dem Durchlaufen der Schleife?

        Und wie groß ist i nach dem Durchlaufen der Schleife?

        Du willst dir 51 Mal den Elementbaum nach sämtlichen 'ol'-Elementen parsen, um an dein Objekt zu kommen?? Nein!! Das muss du nicht bei jedem Schleifendurchlauf neu tun; einmal reicht! Vor der Schleife:

        Macht das denn einen Unterschied??

        Ja, getElementsByTagName ist eine sehr teure Operation (teuer im Sinne von langer Abarbeitungszeit). Besonders teure Operation sollte man nicht unnötig oft ausführen. 51 Mal sind genau 50 Mal zu oft.

        See ya up the road,
        Gunnar

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