Heim  >  Artikel  >  Web-Frontend  >  Warum wird mein Click-Event-Listener beim Laden der Seite ausgelöst und nicht, wenn ich auf das Element klicke?

Warum wird mein Click-Event-Listener beim Laden der Seite ausgelöst und nicht, wenn ich auf das Element klicke?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 08:31:02753Durchsuche

Why does my click event listener fire on page load instead of when I click the element?

addEventListener-Ereignistrigger beim Laden der Seite

In JavaScript dient die Methode addEventListener() dazu, einen Ereignis-Listener für ein bestimmtes Element zu registrieren. Beim Versuch, einen Klick-Listener an ein dynamisch erstelltes Element anzuhängen, kann es jedoch bei einigen Entwicklern zu einem eigenartigen Verhalten kommen, bei dem das Ereignis beim Laden der Seite ausgelöst wird und nicht beim Klicken auf das Element. Um dieses Problem zu lösen, schauen wir uns das Code-Snippet und seine Ausführung genauer an.

Im bereitgestellten Skript wird mit document.write() ein HTML-Div-Element mit der ID „myDiv“ erstellt und anschließend das Element abgerufen mit document.getElementById("myDiv"). Anschließend wird die Methode addEventListener() verwendet, um einen Ereignis-Listener für das „Click“-Ereignis an das abgerufene Element anzuhängen. Der Listener ist als Alert(„Clicktrack“) definiert, der versucht, einen Alarm mit der Meldung „Clicktrack“ anzuzeigen.

Der Kern des Problems liegt in der Art und Weise, wie der Event-Handler an addEventListener() übergeben wird. Bei der Verwendung eines Funktionsausdrucks ist es unbedingt erforderlich, die Funktion in Klammern zu kapseln, um sicherzustellen, dass die Funktion selbst und nicht ihr Rückgabewert übergeben wird. Im Codeausschnitt sollte die korrekte Syntax wie folgt lauten:

el.addEventListener("click", function() { alert("clicktrack"); }, false);

Diese Änderung kapselt den Alarmaufruf innerhalb einer Funktion und stellt sicher, dass die Funktion als Ereignishandler und nicht wie der Rückgabewert der Funktion registriert wird undefiniert. Daher wird das Ereignis wie vorgesehen nur ausgelöst, wenn auf das Element „myDiv“ geklickt wird, und nicht beim Laden der Seite.

Das obige ist der detaillierte Inhalt vonWarum wird mein Click-Event-Listener beim Laden der Seite ausgelöst und nicht, wenn ich auf das Element klicke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn