56

document.allいつvs.を使用する必要がありますdocument.getElementByIdか?

4

8 に答える 8

65

document.allは、W3C 標準に対する Microsoft 独自の拡張機能です。

getElementById()が標準です - それを使用してください。

ただし、 jQueryなどの js ライブラリを使用すると便利かどうかを検討してください。たとえば、$("#id")は に相当する jQuery ですgetElementById()さらに、 CSS3セレクター以外のものも使用できます。

于 2010-03-09T10:55:14.303 に答える
39

document.all非常に古いため、もう使用する必要はありません

ニコラス・ザカスを引用するには:

たとえば、DOM が初期の頃は、すべてのブラウザーが getElementById() をサポートしていたわけではないため、次のようなコードがたくさんありました。

if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {  //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}
于 2010-03-09T10:55:28.640 に答える
6

document.all()は、DOM 要素にアクセスする非標準の方法です。一部のブラウザでは廃止されています。ドキュメントのすべてのサブ要素にアクセスできます。

document.getElementById()は標準であり、完全にサポートされています。各要素には、ドキュメント上で一意の ID があります。

あなたが持っている場合:

<div id="testing"></div>

使用する

document.getElementById("testing"); 

その特定の div にアクセスできます。

于 2010-03-09T10:58:15.530 に答える
5

document.querySelectorAll(およびdocument.querySelector()最初に見つかった要素を返すそのバリアント) は、はるかに強力です。簡単にできます:

  • でコレクション全体を取得し、document.querySelectorAll("*")非標準document.allプロパティを効果的にエミュレートします。
  • document.querySelector("#your-id")を効果的にエミュレートするdocument.getElementById()機能を使用します。
  • document.querySelectorAll(".your-class")を効果的にエミュレートするdocument.getElementsByClassName()機能を使用します。
  • document.querySelectorAll("form")の代わりにdocument.forms、およびのdocument.querySelectorAll("a")代わりに使用しdocument.linksます。
  • 他のドキュメントのビルトインでは対応できない、より複雑な DOM クエリを (利用可能な CSS セレクターを使用して) 実行します。

統一されたクエリ API が最適です。規格内にあるとしても、document.all不便です。

于 2013-11-08T14:22:26.453 に答える
2

Microsoft のアーカイブされた Internet Explorer Dev Centerによるとdocument.all、IE 11 および Edge では非推奨です!

于 2013-07-29T11:20:54.480 に答える
-1

document.allは現在 Chrome で動作します (いつからかはわかりません) が、私は過去 20 年間それを見逃していました.... 不格好なdocument.getElementById. Firefox で機能するかどうかはわかりませんが、彼らは既存の Web と互換性を持ちたいとはまったく思っていませんでした。既存の Web を受け入れる代わりに、常に新しい標準を作成していました。

于 2018-08-24T02:34:03.760 に答える