JürgenB: Variablen in temporären Funktionen

Beitrag lesen

Hallo Mudder,

for(var i=0;i<10;i++) {
  element[i].onclick = function() {
    internevariable = i;
    alert(internevariable);
  }
}

hier ist internevariable eine globale Variable, der nacheinander die werte 1 bis 9 zugewiesen werden. Am Ende hat sie den Wert 9. Du musst dafür sorgen, dass internevariable eine lokale Variable wird. Dieses geht mit so genannten closures: du schließt die Variable in eine Funktion ein:

  
 for(var i=0;i<element.length;i++) {  
  ( function(){  
   var internevariable = i;  
   element[i].onclick = function() {  
    alert(internevariable);  
   }  
  })();  
 }

dabei ist

( function(){ ... })();

eine anonyme Funktion, die sofort ausgeführt wird. Die lokalen Variablen in dieser Funktion werden bei den Schleifendurchläufen nicht mehr überschrieben.

Gruß, Jürgen