Elemen DOM yang Diberikan ID dan Sifat Global
Dalam soalan sebelumnya, diperhatikan bahawa elemen DOM khusus dengan ID boleh diakses sebagai pembolehubah nama atau sifat objek tetingkap dalam Internet Explorer dan Chrome. Sebagai contoh, untuk elemen HTML:
<div>
Sifat innerHTML boleh diambil seperti berikut:
alert(example.innerHTML); // Alerts "some text". alert(window["example"].innerHTML); // Alerts "some text".
Ini menimbulkan persoalan:
Properties dan Kebolehcapaian Global
Gelagat yang dimaksudkan adalah untuk elemen yang dinamakan menjadi sifat jelas objek dokumen. Walau bagaimanapun, pendekatan ini bermasalah kerana ia membenarkan nama elemen bercanggah dengan sifat dokumen sebenar.
Microsoft Internet Explorer memburukkan lagi isu dengan menetapkan elemen bernama sebagai sifat objek tetingkap. Ini merumitkan lagi perkara dengan menghendaki mengelakkan nama elemen yang sepadan dengan mana-mana ahli dokumen atau objek tetingkap.
Isu dengan Kebolehcapaian Global
Selain itu, elemen yang dinamakan boleh dilihat sebagai pembolehubah seperti global. Walaupun pembolehubah global dan pengisytiharan fungsi biasanya membayanginya, memberikan nilai kepada pembolehubah global dengan nama yang sepadan boleh mengakibatkan ralat dalam Internet Explorer.
Amalan Terbaik
Ia secara amnya tidak digalakkan untuk bergantung pada elemen yang dinamakan sebagai sifat global atau meninggalkan pengisytiharan var apabila mencipta pembolehubah global. Mematuhi document.getElementById disyorkan kerana sokongannya yang lebih luas dan kesamaran yang dikurangkan. Pertimbangkan untuk menggunakan fungsi pembungkus mudah dengan nama yang lebih pendek jika menaip menjadi masalah.
Caching dan Pengoptimuman Penyemak Imbas
Mengekalkan cache carian id-ke-elemen biasanya tidak diperlukan kerana pelayar sering mengoptimumkan panggilan getElementById menggunakan carian pantas. Isu yang berpotensi timbul apabila elemen menukar ID atau ditambah/dialih keluar daripada dokumen.
Penstandardan dan Implikasi Masa Hadapan
Spesifikasi HTML5 kini mengkodifikasikan amalan yang tidak standard sebelum ini menambah elemen bernama pada dokumen dan sifat tetingkap. Ini bermakna Firefox 4 juga akan menyokong fungsi ini.
Kesimpulan
Walaupun mungkin untuk mengakses elemen DOM dengan ID sebagai sifat global dalam penyemak imbas tertentu, amalan ini adalah tidak digalakkan kerana potensi konflik dan kekaburan. Adalah lebih baik untuk bergantung pada document.getElementById atau fungsi pembungkus yang mudah.
Atas ialah kandungan terperinci Bolehkah saya Mengakses Elemen DOM mengikut ID sebagai Sifat Global, dan Patutkah Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!