HTMLCollection vs. NodeList: Punca Masalah
Skrip yang dibentangkan menghadapi masalah kerana fakta bahawa ia memanipulasi HTMLCollection sebaliknya daripada NodeList untuk mengubah suai kelas CSS. HTMLCollection ialah koleksi langsung, bermakna kandungannya dikemas kini secara automatik apabila perubahan dibuat pada DOM (Model Objek Dokumen). Tingkah laku ini membawa kepada akibat yang tidak diingini apabila mengubah saiz koleksi apabila nama kelas elemen diubah suai. Setiap kali elemen mempunyai nama kelasnya ditukar, koleksi mengecualikan elemen itu, menyebabkan saiznya berkurangan.
Penyelesaian: Mengulangi Hanya Elemen Pertama
Untuk menangani isu ini, adalah penting untuk memahami bahawa mengubah nama kelas mana-mana elemen dalam koleksi memberi kesan kepada koleksi itu sendiri. Oleh itu, penyelesaian yang optimum ialah mengubah suai nama kelas bagi elemen pertama sahaja, memastikan saiz koleksi kekal malar.
Untuk Gelung untuk Pengubahsuaian Nama Kelas
Daripada menukar nama kelas berbilang elemen secara manual, skrip boleh melelar melalui setiap elemen dalam HTMLCollection menggunakan gelung for. Pendekatan ini membenarkan pengubahsuaian nama kelas yang konsisten tanpa menjejaskan saiz koleksi.
Contoh Kod Dipertingkat
Kod yang diubah suai menggunakan gelung for untuk berulang melalui HTMLCollection dan menukar nama kelas setiap elemen kepada "block-selected":
var blockSet = document.getElementsByClassName("block-default"); var blockSetLength = blockSet.length; for(var i = 0; i < blockSetLength; i++) { blockSet[0].className = "block-selected"; }
Kesimpulan
Memahami perbezaan antara HTMLCollections dan NodeLists adalah penting dalam pengaturcaraan JavaScript. Dengan menggunakan struktur data yang betul untuk tugas yang sedang dijalankan, pembangun boleh mengelakkan akibat yang tidak diingini dan mencapai hasil yang diinginkan dengan cekap.
Atas ialah kandungan terperinci HTMLCollection lwn. NodeList: Mengapa Mengubah Suai Elemen HTMLCollection Mempengaruhi Saiznya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!