Orlok: per CSS oder javascript automatisch Code an div anhängen

Beitrag lesen

Hallo Marvin

Problem 2 konnte ich schon lösen:

image.onclick = function() { test(); };

Das wird vielleicht funktionieren, ist aber nicht wirklich sinnvoll. Wenn du die Funktion test als Eventhandler registrieren willst, dann kannst du das auch direkt tun, anstatt den Aufruf in einer anonymen Funktion zu kapseln.

image.onclick = test;

Beachte, dass hinter dem Funktionsbezeichner in diesem Fall keine Klammern notiert werden, denn du willst hier bloß ein Funktionsobjekt referenzieren, diese Funktion jedoch nicht gleich aufrufen. Der Aufruf soll schließlich erst erfolgen, wenn das Ereignis eingetreten ist.

function test (event) {
  // do something
}

Abgesehen davon, dass bei dieser Variante ein Funktionsaufruf eingespart wird, gehen hierbei auch nicht die Informationen verloren, die über das Ereignisobjekt bereitgestellt werden, das einer als Eventhandler registrierten Funktion beim Aufruf als Argument übergeben wird.

image.onclick = function (event) {
  // do something
}

Sofern die Funktion test ohnehin nur an dieser Stelle referenziert wird, kannst du die Funktion übrigens auch gleich bei der Zuweisung definieren, wie in dem Beispiel oben.


Allerdings solltest du grundsätzlich die Methode addEventListener verwenden, um Funktionen als Eventhandler zu registrieren, was bezogen auf deinen Anwendungsfall so aussehen könnte:

image.addEventListener('click', test);

Auch hier kannst du dir gegebenenfalls die Vergabe eines Bezeichners sparen und die entsprechende Funktion direkt bei der Registrierung definieren:

image.addEventListener('click', function (event) {
  // do something
});

Viele Grüße,

Orlok