Heim  >  Artikel  >  Web-Frontend  >  Warum wird mein JavaScript „addEventListener“ beim Laden der Seite und nicht beim Klicken ausgelöst?

Warum wird mein JavaScript „addEventListener“ beim Laden der Seite und nicht beim Klicken ausgelöst?

DDD
DDDOriginal
2024-10-30 02:57:28762Durchsuche

Why is my JavaScript `addEventListener` firing on page load instead of on click?

JavaScript „addEventListener“-Ereignisauslösung beim Laden der Seite

Dieses Problem tritt auf, wenn der Ereignis-Listener nicht ordnungsgemäß angehängt ist, insbesondere im bereitgestellten Code-Snippet . Hier ist eine Erklärung und Lösung:

Im bereitgestellten Code wird der Ereignis-Listener für das „click“-Ereignis an das neu erstellte div-Element mit der ID „myDiv“ angehängt:

<code class="javascript">el = document.getElementById("myDiv");
el.addEventListener("click", alert("clicktrack"), false);</code>

Das Problem liegt jedoch in der Rückruffunktion des Ereignis-Listeners, bei der es sich um eine in eine Zeichenfolge eingeschlossene Warnanweisung handelt:

<code class="javascript">alert("clicktrack")</code>

Dieser Code versucht, die Warnanweisung sofort auszuführen, wenn der Ereignis-Listener angehängt wird. Da Ereignis-Listener während der DOM-Analyse und -Ausführung registriert werden, wird die Warnung aufgerufen, wenn die Seite geladen wird, und nicht, wenn auf das Element geklickt wird.

Um dieses Problem zu beheben, sollte der Code die Warnungsanweisung in eine anonyme Funktion einschließen, die kann an den Ereignis-Listener übergeben werden:

<code class="javascript">el.addEventListener("click", function() { alert("clicktrack"); }, false);</code>

Mit dieser Änderung wird die Warnung nur dann ausgeführt, wenn das „myDiv“-Element wie vorgesehen ein „Klick“-Ereignis empfängt.

Das obige ist der detaillierte Inhalt vonWarum wird mein JavaScript „addEventListener“ beim Laden der Seite und nicht beim Klicken ausgelöst?. 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