AK-Palme: Anonyme Funktionen mit Variablenübergabe

Hi,
ich benutze gerne Anonyme Funktionen in Schleifen. Z. B.

while(b = z[i]){
  row.appendChild(tCol(b.ID));
  row.onclick = function (){
    alert(b.ID); // Fehler hier
  }
  i++;
}

Das Ding ist, dass ich jetzt jedesmal die ID alerten will, die aktuell ist. Ich hab schon rumgespielt, es aber nur geschafft, dass alle Links die _letzte_ ID der Liste ausgeben.

Hat jemand einen Tipp für mich?

Danke,
AK-Palme

  1. hi,

    ich benutze gerne Anonyme Funktionen in Schleifen. Z. B.

    while(b = z[i]){
      row.appendChild(tCol(b.ID));
      row.onclick = function (){
        alert(b.ID); // Fehler hier
      }
      i++;
    }

    Das Ding ist, dass ich jetzt jedesmal die ID alerten will, die aktuell ist. Ich hab schon rumgespielt, es aber nur geschafft, dass alle Links die _letzte_ ID der Liste ausgeben.

    Beziehst du dich auf die ID des HTML-Elementes, welchem du diese onclick-Funktion zugewiesen hast? Die bekommst du innerhalb der Funktion über this.id.

    Oder beziehst du dich auf eine "ID", die nur in der Schleife vorhanden ist?
    Dann legst du diesen Wert entweder auch am Element mit ab - row.meineID = b.ID, in der Funktion this.meineID - oder du nutzt Closures (Zusammen mit author:molily ergiebiges Stichwort für Archivsuche).

    gruß,
    wahsaga

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

    ich benutze gerne Anonyme Funktionen in Schleifen. Z. B.

    while(b = z[i]){
      row.appendChild(tCol(b.ID));
      row.onclick = function (){
        alert(b.ID); // Fehler hier
      }
      i++;
    }

    Das Ding ist, dass ich jetzt jedesmal die ID alerten will, die aktuell ist. Ich hab schon rumgespielt, es aber nur geschafft, dass alle Links die _letzte_ ID der Liste ausgeben.

    Speichere die ID jeweils als Eigenschaft des Objekts und greife dann per this darauf zu:

      
    while(b = z[i]){  
      row.appendChild(tCol(b.ID));  
      row.b = b;  
      row.onclick = function (){  
        alert(this.b.ID);  
      }  
      i++;  
    }  
    
    

    mfg. Daniel

    1. Danke, das wars :)

      1. Danke, das wars :)

        Wozu brauchst du überhaupt die ID?
        Du hast doch bereits das Objekt.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Das ist nicht die ID des Objektes sondern eine die mittels Ajax empfangen wurde.

          1. Hallo AK-Palme.

            Bei 40°C.

            Einen schönen Donnerstag noch.

            Gruß, Math*scnr*ias

            --
            ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
            debian/rules
          2. Das ist nicht die ID des Objektes sondern eine die mittels Ajax empfangen wurde.

            im onclick Event der Reihe?

            Struppi.

            --
            Javascript ist toll (Perl auch!)