Javascript Event-Listener mit Argumenten entfernen?
Ich habe einen Javascript Event-Listener erstellt, der wenn auf das Dokument mit dem Mausrad geklickt wird, feuern soll. Diesen möchte ich nun entfernen, allerdings weiß ich nicht wie ich das machen soll.
document.addEventListener('mousedown', (t)=>{ausgabe(t);});
function ausgabe(t){
if(t.button == 1){
alert('gedrückt');
}
}
Ich hoffe auf Hilfe, Bohne47
3 Antworten
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
HTML, JavaScript, Webentwicklung
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.
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Mediengestalter Digital und Print
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);