Maison > interface Web > js tutoriel > le corps du texte

Comment résoudre les problèmes Array.forEach avec HTMLCollections dans Edge et Internet Explorer ?

Mary-Kate Olsen
Libérer: 2024-10-20 06:42:02
original
775 Les gens l'ont consulté

How to Fix Array.forEach Issues with HTMLCollections in Edge and Internet Explorer?

Array.forEach Problème avec HTMLCollections dans Edge et Internet Explorer

Introduction :

DOM Les propriétés et méthodes de collection, telles que querySelectorAll, renvoient des collections, en particulier NodeLists (pour querySelectorAll) ou HTMLCollections (pour des méthodes comme getElementsByTagName). Ces collections diffèrent des tableaux classiques par leurs fonctionnalités.

Le problème avec forEach :

NodeList et HTMLCollection ne prennent pas en charge nativement la méthode forEach. C'est pourquoi vous rencontrez l'erreur « L'objet ne prend pas en charge la propriété ou la méthode 'forEach' » dans les navigateurs Microsoft Edge et Internet Explorer.

Solutions :

1. Polyfill forEach pour NodeList :

Pour que forEach fonctionne avec NodeList, vous pouvez le définir comme :

<code class="js">if (typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
Copier après la connexion

2. Itérabilité du polyfill pour NodeList et HTMLCollection :

Comme NodeList et HTMLCollection sont spécifiés pour être itérables, vous pouvez le polyfill en utilisant :

<code class="js">if (typeof Symbol !== "undefined" &amp;&amp; Symbol.iterator &amp;&amp; typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype[Symbol.iterator]) {
    Object.defineProperty(NodeList.prototype, Symbol.iterator, {
        value: Array.prototype[Symbol.iterator],
        writable: true,
        configurable: true
    });
}</code>
Copier après la connexion

Remarques supplémentaires :

  • for-of : l'itérabilité du polyfilling vous permet d'utiliser la syntaxe de boucle for-of directement sur les collections.
  • Live Collection : HTMLCollection est une collection dynamique, ce qui signifie que les modifications apportées au DOM sont reflétées dans la collection. NodeList n'est pas en ligne.
  • Compatibilité : Les polyfills fournis ciblent les navigateurs sans support natif de forEach, tels que IE11.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!