Rumah > hujung hadapan web > tutorial js > Mengapa Atribut onclick Skrip Pengguna Saya Menyebabkan \'Ralat Rujukan Tidak Ditangkap: fungsi tidak ditakrifkan\'?

Mengapa Atribut onclick Skrip Pengguna Saya Menyebabkan \'Ralat Rujukan Tidak Ditangkap: fungsi tidak ditakrifkan\'?

Susan Sarandon
Lepaskan: 2024-11-19 06:58:02
asal
359 orang telah melayarinya

Why Does My Userscript's onclick Attribute Cause an

Unresolved ReferenceError: fungsi tidak ditentukan dengan onclick

Masalah

Dalam skrip pengguna, percubaan untuk memanggil fungsi melalui atribut onclick menghasilkan Ralat Rujukan Tidak Ditangkap: fungsi tidak ditakrifkan.

Penyiasatan

Tingkah laku atribut onclick tradisional, di mana fungsi ditakrifkan dalam skrip, tidak berfungsi dalam skrip pengguna disebabkan oleh mekanisme kotak pasir.

Penyelesaian

Untuk menyelesaikan isu ini, sentiasa gunakan addEventListener() dan bukannya atribut onclick.

Kod Refactor

Ganti atribut onclick dengan:

document.getElementById("ElementID").addEventListener("click", functionName, false);
Salin selepas log masuk

Kebimbangan Tambahan

Tulis Ganti DOM dan Pengendali Acara

Elakkan menggunakan innerHTML atau outerHTML untuk menulis ganti elemen DOM beberapa kali, kerana ia mengalih keluar pengendali acara sedia ada.

ID Unik

Pastikan setiap elemen mempunyai ID unik. Menggunakan semula ID akan menghasilkan isu pengesahan.

Contoh

Dalam kod ini, atribut onclick telah digantikan dengan addEventListener() dan isu yang ditimpa DOM telah ditangani:

for (i = 0; i < EmoteURLLines.length; i++) {
    if (checkIMG (EmoteURLLines[i])) {
        emoteTab[2].innerHTML += '<span>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Atribut onclick Skrip Pengguna Saya Menyebabkan \'Ralat Rujukan Tidak Ditangkap: fungsi tidak ditakrifkan\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan