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
Susan Sarandonasal
2024-11-19 06:58:02368semak imbas

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);

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>

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!

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