最近の Microsoft ブラウザでは forEach() が querySelectorAll で機能しないのはなぜですか?

Susan Sarandon
リリース: 2024-10-20 06:44:02
オリジナル
528 人が閲覧しました

Why doesn't forEach() work on querySelectorAll in recent Microsoft browsers?

querySelectorAll の forEach が最近の Microsoft ブラウザーで動作しない

forEach() メソッドは、広くサポートされているにもかかわらず、最近のバージョンのインターネットで querySelectorAll とともに使用するといくつかの問題が発生しますExplorer (11) と Edge。

問題の理解

一致する DOM 要素を表すコレクションである NodeList と HTMLCollection には、古い Microsoft ブラウザーにはネイティブで forEach() メソッドがありません。ただし、これらのコレクションは反復可能であり、for-of などの代替メソッドを使用してループすることができます。

問題の解決

forEach()

forEach() メソッドをネイティブにサポートしていないブラウザでは、NodeList および HTMLCollection に手動で forEach() メソッドを追加できます。これはシンプルで効果的な解決策です:

<code class="javascript">if (typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
  NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
ログイン後にコピー

ポリフィルの反復性

ブラウザに ES2015 機能があるものの、まだ NodeList の反復性が欠けている場合は、それをポリフィルすることもできます。

<code class="javascript">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>
ログイン後にコピー

結論

forEach() と反復性をポリフィルすることで、古い Microsoft ブラウザーの制限を克服し、NodeList コレクションと HTMLCollection コレクションを操作するときにコードの一貫した動作を保証できます。

以上が最近の Microsoft ブラウザでは forEach() が querySelectorAll で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!