Menggunakan Array.forEach dengan getElementsByClassName
Apabila cuba mengulang elemen DOM menggunakan document.getElementsByClassName( "myclass" ).forEach, satu mungkin menghadapi ralat "document.getElementsByClassName("myclass").forEach bukan fungsi." Ini berlaku kerana hasil getElementsByClassName bukanlah tatasusunan tetapi HTMLCollection.
Untuk menyelesaikan isu ini, seseorang mesti menukar HTMLCollection kepada tatasusunan sebelum menggunakan forEach. Ini boleh dilakukan menggunakan kaedah Array.prototype.forEach.call dengan HTMLCollection sebagai nilai ini:
var els = document.getElementsByClassName("myclass"); Array.prototype.forEach.call(els, function(el) { // Do stuff here console.log(el.tagName); });
Sebagai alternatif, seseorang boleh menggunakan [].forEach.call:
[].forEach.call(els, function (el) {...});
Dalam ES6, fungsi Array.from boleh digunakan:
Array.from(els).forEach((el) => { // Do stuff here console.log(el.tagName); });
Atas ialah kandungan terperinci Mengapa `document.getElementsByClassName().forEach` Tidak Berfungsi dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!