Dalam bidang pembangunan JavaScript, isu yang membingungkan timbul apabila nama fungsi bertembung dengan ID elemen . Pertanyaan ini menyelidiki sebab asas dan meneroka sekatan dan implikasi konflik tersebut.
Pertimbangkan contoh berikut:
Dalam biola pertama , kod ini berjaya memaklumkan nilai pilihan yang dipilih. Walau bagaimanapun, dalam biola kedua, menggunakan elemen borang (dengan borang yang mengelilingi pilihan), kod tersebut gagal dengan ralat "sempadan bukan fungsi."
Percanggahan ini berpunca daripada isu warisan dalam JavaScript, di mana rantaian skop nilai atribut pengendali peristiwa termasuk objek Borang yang disertakan. Objek Borang ini mempunyai sifat yang mewakili nama kawalan anaknya, termasuk elemen pilih sempadan.
Oleh itu, apabila merujuk kepada jidar sebagai fungsi dalam pengendali acara dalam konteks borang:
Ini bersamaan dengan memanggil form.border(this.value), yang merujuk sifat objek Borang dan bukannya yang dimaksudkan fungsi.
Spesifikasi bahasa JavaScript tidak secara eksplisit melarang konflik penamaan antara fungsi dan ID elemen. Walau bagaimanapun, Pengikatan HTML Tahap 2 DOM menentukan bahawa HTMLCollections (termasuk borang dan kawalannya) boleh diakses dengan nama atau ID menggunakan sintaks kurungan.
Ini membayangkan bahawa:
Menggunakan pengecam yang sama untuk kedua-dua elemen dan fungsi boleh:
Untuk mengelakkan isu ini, pertimbangkan untuk mengikuti garis panduan ini:
Atas ialah kandungan terperinci Mengapa Nama Fungsi JavaScript Kadangkala Bercanggah dengan ID Elemen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!