document.all
いつvs.を使用する必要がありますdocument.getElementById
か?
8 に答える
document.all
は、W3C 標準に対する Microsoft 独自の拡張機能です。
getElementById()
が標準です - それを使用してください。
ただし、 jQueryなどの js ライブラリを使用すると便利かどうかを検討してください。たとえば、$("#id")
は に相当する jQuery ですgetElementById()
。さらに、 CSS3セレクター以外のものも使用できます。
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];
}
document.all()は、DOM 要素にアクセスする非標準の方法です。一部のブラウザでは廃止されています。ドキュメントのすべてのサブ要素にアクセスできます。
document.getElementById()は標準であり、完全にサポートされています。各要素には、ドキュメント上で一意の ID があります。
あなたが持っている場合:
<div id="testing"></div>
使用する
document.getElementById("testing");
その特定の div にアクセスできます。
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
不便です。
Microsoft のアーカイブされた Internet Explorer Dev Centerによるとdocument.all
、IE 11 および Edge では非推奨です!
document.all
は現在 Chrome で動作します (いつからかはわかりません) が、私は過去 20 年間それを見逃していました.... 不格好なdocument.getElementById
. Firefox で機能するかどうかはわかりませんが、彼らは既存の Web と互換性を持ちたいとはまったく思っていませんでした。既存の Web を受け入れる代わりに、常に新しい標準を作成していました。