Rumah > Artikel > hujung hadapan web > Mengapakah `addEventListener` JavaScript saya menyala pada pemuatan halaman dan bukannya pada klik?
JavaScript "addEventListener" Event Firing on Page Load
Isu ini timbul apabila pendengar acara dilampirkan secara tidak betul, khususnya dalam coretan kod yang disediakan . Berikut ialah penjelasan dan penyelesaian:
Dalam kod yang disediakan, pendengar acara untuk acara "klik" dilampirkan pada elemen div yang baru dibuat dengan id "myDiv":
<code class="javascript">el = document.getElementById("myDiv"); el.addEventListener("click", alert("clicktrack"), false);</code>
Walau bagaimanapun, isu ini terletak dalam fungsi panggil balik pendengar acara, yang merupakan pernyataan amaran yang dibalut dengan rentetan:
<code class="javascript">alert("clicktrack")</code>
Kod ini cuba untuk melaksanakan pernyataan amaran serta-merta apabila pendengar acara dilampirkan. Memandangkan pendengar acara didaftarkan semasa penghuraian dan pelaksanaan DOM, makluman akan dipanggil apabila halaman dimuatkan, bukan apabila elemen diklik.
Untuk menyelesaikan masalah ini, kod harus membalut pernyataan amaran dalam fungsi tanpa nama, yang boleh dihantar kepada pendengar acara:
<code class="javascript">el.addEventListener("click", function() { alert("clicktrack"); }, false);</code>
Dengan pengubahsuaian ini, makluman hanya akan dilaksanakan apabila elemen "myDiv" menerima acara "klik", seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapakah `addEventListener` JavaScript saya menyala pada pemuatan halaman dan bukannya pada klik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!