Rumah >hujung hadapan web >tutorial js >Mengapa `getElementsByClassName` Tidak Mengembalikan Array dalam JavaScript?

Mengapa `getElementsByClassName` Tidak Mengembalikan Array dalam JavaScript?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 12:23:15750semak imbas

Why Doesn't `getElementsByClassName` Return an Array in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn