molily: onclick wird automatisch ausgeführt

Beitrag lesen

Hallo,

links2.setAttribute('onClick',send(lagerFreiraum));  //bei onclick passiert dasselbe

Häufiger Fehler: Handler-Funktion direkt aufrufen

Du solltest besser addEventListener verwenden. In jedem Fall musst du ein Funktionsobjekt übergeben. Das ist beim Aufrufen von send natürlich nicht der Fall. send(lagerFreiraum) gibt wahrscheinlich undefined zurück, aber kein Funktionsobjekt.

Du kannst eine Closure erzeugen, indem du eine Funktion notierst, die dir eine Funktion zurückgibt. Dabei wird der übergebene Parameter eingeschlossen und steht der zurückgegebenen Funktion zur Verfügung:

links2.addEventListener('click', makeSend(lagerFreiraum), false);  
  
function makeSend (1F) {  
  return function send () {  
    alert(1F);  
  };  
}

Dasselbe lässt sich auch einfach schreiben. Du kannst bind benutzen, um eine Funktion zu erzeugen, die den Parameter übergeben bekommt:

links2.addEventListener('click', send.bind(this, lagerFreiraum), false);

In der funktionalen Programmierung nennt man dieses Verfahren Currying oder Schönfinkeln. Siehe auch http://www.peterkroener.de/ecmascript-5-die-nachste-version-von-javascript-teil-6-function-prototype-bind/.

Mathias