Heim > Artikel > Web-Frontend > Warum wird mein JavaScript „addEventListener“ beim Laden der Seite und nicht beim Klicken ausgelöst?
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!