Rumah >hujung hadapan web >tutorial js >Mengapakah pendengar acara klik saya menyala pada pemuatan halaman dan bukannya apabila saya mengklik elemen?

Mengapakah pendengar acara klik saya menyala pada pemuatan halaman dan bukannya apabila saya mengklik elemen?

Barbara Streisand
Barbara Streisandasal
2024-10-27 08:31:02855semak imbas

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

addEventListener Event Triggers on Page Load

Dalam JavaScript, kaedah addEventListener() direka untuk mendaftarkan pendengar acara untuk elemen tertentu. Walau bagaimanapun, apabila cuba melampirkan pendengar klik pada elemen yang dicipta secara dinamik, sesetengah pembangun mungkin menghadapi gelagat pelik yang mana peristiwa itu berlaku apabila halaman dimuatkan dan bukannya apabila elemen itu diklik. Untuk merungkai isu ini, mari kita mendalami coretan kod dan pelaksanaannya.

Dalam skrip yang disediakan, elemen div HTML dengan ID "myDiv" dicipta menggunakan document.write(), diikuti dengan mendapatkan semula elemen menggunakan document.getElementById("myDiv"). Kemudian, kaedah addEventListener() digunakan untuk melampirkan pendengar acara untuk acara "klik" pada elemen yang diambil. Pendengar ditakrifkan sebagai amaran("clicktrack"), yang cuba memaparkan amaran dengan mesej "clicktrack."

Inti masalah terletak pada cara pengendali acara diserahkan kepada addEventListener(). Apabila menggunakan ungkapan fungsi, adalah penting untuk merangkum fungsi dalam kurungan untuk memastikan fungsi itu sendiri diluluskan dan bukannya nilai pulangannya. Dalam coretan kod, sintaks yang betul hendaklah:

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

Pengubahsuaian ini merangkumi panggilan amaran dalam fungsi, memastikan fungsi itu didaftarkan sebagai pengendali peristiwa dan bukannya nilai pulangan fungsi, yang akan menjadi tidak ditentukan. Akibatnya, acara hanya akan dicetuskan apabila elemen "myDiv" diklik, seperti yang dimaksudkan, dan bukannya pada pemuatan halaman.

Atas ialah kandungan terperinci Mengapakah pendengar acara klik saya menyala pada pemuatan halaman dan bukannya apabila saya mengklik elemen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn