Rumah >hujung hadapan web >tutorial js >Mengapa `getElementsByClassName` Tidak Mengembalikan Array dalam JavaScript?
getElementsByClassName Mengembalikan HTMLCollection, Bukan Array
Dalam JavaScript, kaedah document.getElementsByClassName mengembalikan koleksi elemen DOM yang sepadan dengan yang ditentukan nama kelas. Walau bagaimanapun, koleksi ini bukan tatasusunan, tetapi HTMLCollection.
Dalam pelayar moden (Firefox 3 dan lebih baru), kaedah Array.forEach boleh digunakan dengan HTMLCollection dengan menetapkan this nilai fungsi forEach kepada HTMLCollection. Begini cara untuk melakukannya:
var els = document.getElementsByClassName("myclass"); Array.prototype.forEach.call(els, function(el) { // Do something with the element }); // Or, in ES6+ [].forEach.call(els, (el) => { // Do something with the element });
Pendekatan yang lebih moden menggunakan ES6 ialah menggunakan Array.from untuk menukar HTMLCollection menjadi tatasusunan sebenar:
Array.from(els).forEach((el) => { // Do something with the element });
Dengan menetapkan nilai ini atau menggunakan Array.from, anda boleh mengulangi HTMLCollection menggunakan kaedah forEach seolah-olah ia adalah tatasusunan. Ambil perhatian bahawa pelayar lama seperti Internet Explorer 8 dan ke bawah tidak menyokong pendekatan ini dan akan mengembalikan NodeList dan bukannya HTMLCollection.
Atas ialah kandungan terperinci Mengapa `getElementsByClassName` Tidak Mengembalikan Array dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!