Javascript Event-Listener mit Argumenten entfernen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Am einfachsten so:

const ausgabe = (t) => {
  document.getElementById('click').removeEventListener('mousedown', ausgabe);
  alert('gedrückt');
};

document.getElementById('click').addEventListener('mousedown', ausgabe);
Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.

Hi Bohne47, anonyme Funktionen können nicht mit der removeEventListener-Methode entfernt werden. Hierfür wird empfohlen eine externe Funktion mit dem EventListener aufzurufen.

Hier ein Beispiel eine Seite dazu aus Selfhtml: https://wiki.selfhtml.org/wiki/JavaScript/DOM/EventTarget/removeEventListener

Um das oben aber zu lösen, habe ich einen Alternativcode gebastelt. Da event-Objekt automatisch übertragen wird, muss man diese nicht als Parameter angeben.

 document.addEventListener('mousedown', ausgabe);
function ausgabe(event){
    if(event.button == 1){
        alert('gedrückt');
        document.removeEventListener("mousedown", ausgabe);
    }
}
Woher ich das weiß:Berufserfahrung – Ich bin gelernter Mediengestalter Digital und Print(IHK)
function handleMouseDown(t) {
    if (t.button === 1) {
        alert('gedrückt');
    }
}

document.addEventListener('mousedown', handleMouseDown);

setTimeout(function() {
    document.removeEventListener('mousedown', handleMouseDown);
    alert('Event-Listener entfernt');
}, 5000);