molily: Variable als unveränderbaren Wert einfügen

Beitrag lesen

Hallo,

Abhilfe wären Closures

Eine Closure ist Auslöser des Problems. Aber sie kann auch die Lösung sein.

Ist nicht genau dieser Fall ein Closure?

Ja. Sowohl Philemons08s als auch JürgenBs Code erzeugen Closures, die die Variablen der übergeordneten Funktionen einschließen. In JürgenBs Fall wird aber nicht auf den Umgebungskontext zugegriffen.

Abhilfe wären Closures insofern, dass man pro Schleife einen neuen Funktionskontext erzeugen kann:

var createButton = function(i) {  
  var btn = document.createElement("button");  
  btn.id = "Info" + i;  
  btn.innerHTML = "Infos";  
  // Dies ist eine Closure, die die Variablen von »createButton«  
  // einschließt, also das i mit dem gewünschten Wert:  
  btn.onclick = function(){  
    Info(i);  
  };  
  var td = document.getElementById(i+"knopf")  
  td.appendChild(btn);  
};  
  
for (var i = 1; i <= 8; i++) {  
  createButton(i);  
}

Mathias