Array.forEach Issue dengan HTMLCollections dalam Edge dan Internet Explorer
Pengenalan:
DOM sifat koleksi dan kaedah, seperti querySelectorAll, kembalikan koleksi, khususnya NodeLists (untuk querySelectorAll) atau HTMLCollections (untuk kaedah seperti getElementsByTagName). Koleksi ini berbeza daripada tatasusunan biasa dalam fungsinya.
Masalah dengan forEach:
NodeList dan HTMLCollection tidak menyokong kaedah forEach secara asli. Inilah sebabnya mengapa anda menghadapi ralat "Objek tidak menyokong sifat atau kaedah 'forEach'" dalam pelayar Microsoft Edge dan Internet Explorer.
Penyelesaian:
1. Polyfill forEach for NodeList:
Untuk menjadikan forEach berfungsi dengan NodeList, anda boleh mentakrifkannya sebagai:
<code class="js">if (typeof NodeList !== "undefined" && NodeList.prototype && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; }</code>
2. Polyfill Iterability untuk NodeList dan HTMLCollection:
Oleh kerana NodeList dan HTMLCollection ditentukan untuk menjadi lelaran, anda boleh polyfill menggunakan:
<code class="js">if (typeof Symbol !== "undefined" && Symbol.iterator && typeof NodeList !== "undefined" && NodeList.prototype && !NodeList.prototype[Symbol.iterator]) { Object.defineProperty(NodeList.prototype, Symbol.iterator, { value: Array.prototype[Symbol.iterator], writable: true, configurable: true }); }</code>
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Isu Array.forEach dengan HTMLCollections dalam Edge dan Internet Explorer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!