Antwort an „Rolf B“ verfassen

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
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen