Hallo Felix Riesterer,
// die anonyme Funktion (zweiter Parameter nach "blur")
// enthält eine gekapselte Variable "input_1" (Closure):
input_1.addEventListener("blur", function () {
meineBlurFunktion(input_1);
});
Besser nicht. Jedenfalls nur unter der Voraussetzung, dass input_1 als const deklariert ist.
Closures sind besser als globale Variablen, aber man sollte trotzdem nach Möglichkeit vermeiden, aus einer Funktion heraus auf Daten des Elternkontexts zuzugreifen. Ich würde die target-Eigenschaft des event-Objekts zu bevorzugen. Entweder gleich bei Übergabe an meineBlurFunktion, oder man schreibt explizit einen blur-Handler und vermeidet damit die Mediator-Funktion. Ein blur-Handler lässt sich auch wieder deregistrieren (was Linuchs ebenfalls nicht zu benötigen scheint).
// So
input_1.addEventListener("blur", function (blurEvent) {
meineBlurFunktion(blurEvent.target);
});
// Oder so
input_1.addEventListener("blur", handleBlurOnInput);
function handleBlurOnInput(blurEvent) {
...
}
Wobei Linuchs – sofern ich das richtig verstand – der Blur-Funktion gar keine Daten mitgibt, sondern lediglich das Auswahlfenster schließt.
Und wenn ich nochmal darauf hinweisen darf: gerade wenn man Forms dynamisch erweitert, ist es in den meisten Fällen hilfreich, die Eventhandler ein einzigs Mal auf dem Form zu registrieren und die Events dahin blubbern zu lassen, statt on the fly einen Eventhandler nach dem anderen ins DOM zu kleben.
Rolf
sumpsi - posui - obstruxi