Rumah >hujung hadapan web >tutorial js >Mengapa Skrip Pengguna Saya Mendapat Ralat \'Uncaught ReferenceError: Function Not Defined\' Apabila Menggunakan onclick, dan Bagaimana Saya Boleh Membetulkannya?
Apabila cuba menambah emote tersuai pada tapak web menggunakan skrip pengguna, anda mungkin menghadapi ralat yang menyatakan, "Uncaught ReferenceError: fungsi tidak ditakrifkan" apabila mengklik butang dengan atribut onclick.
Skrip pengguna beroperasi dalam persekitaran kotak pasir, menghalang akses terus kepada fungsi yang sedia ada dalam skop halaman web sasaran. Atribut onclick menggunakan skop halaman web ini, menyebabkan ia gagal apabila digunakan dalam skrip pengguna.
Untuk menyelesaikan isu ini, elakkan menggunakan onclick() dan atribut serupa dalam skrip pengguna. Sebaliknya, pilih kaedah addEventListener() (atau fungsi perpustakaan yang setara seperti jQuery .on() untuk tujuan ini.
Sebagai contoh, kod berikut menggunakan onclick:
something.outerHTML += '<input onclick="resetEmotes()">
Boleh ditulis semula menggunakan addEventListener():
something.outerHTML += '<input>
Selain itu, elakkan menghantar data terus kepada pendengar acara menggunakan kod seperti ini:
emoteTab[2].innerHTML += '<span>
Sebaliknya, gunakan atribut data dan tambahkan pendengar acara secara berasingan, seperti yang dilihat di bawah:
for (i = 0; i < EmoteURLLines.length; i++) { if (checkIMG(EmoteURLLines[i])) { emoteTab[2].innerHTML += '<span>
Dalam fungsi appendEmote:
function appendEmote(zEvent) { var emoteUsage = this.getAttribute("data-usage"); shoutdata.value += emoteUsage; }
Elakkan menggunakan semula ID yang sama untuk berbilang elemen kerana ia tidak sah setiap halaman hanya boleh mempunyai satu tika ID tertentu.
Selain itu, berhati-hati menggunakan .outerHTML atau .innerHTML kerana ia mengalih keluar acara sedia ada. pengendali daripada nod yang terjejas.
Atas ialah kandungan terperinci Mengapa Skrip Pengguna Saya Mendapat Ralat \'Uncaught ReferenceError: Function Not Defined\' Apabila Menggunakan onclick, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!