書きします。すべての対書きします。getElementById
-
18-09-2019 - |
質問
きを起用すべき document.all
対 document.getElementById
?
解決
document.all
はW3C標準にMicrosoft独自の拡張機能です。
getElementById()
は標準である - それを使用する
便利になるだろう jQueryののようなJSライブラリを使用している場合しかし、検討してください。例えば、$("#id")
はgetElementById()
のためのjQueryのと等価です。プラス、あなただけのCSS3 のセレクタより以上を使用することができます。
他のヒント
document.all
は 非常に 古い場 なので、使う.
引用 ニコラスZakas:
例えば、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
み 低 に匹敵す document.getElementById
.など使わないことでしょう一つのその他のかを返し同じです。
場合のためのフィルターを通してブラウザの機能を使用できるとして、 マルセル-Korpelの回答 このように:
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.getElementsByTagName('*')
は相当 document.all
.
例えば、だんに使用 document.all
検討すべての要素がページのようになります:
var j = document.all.length;
for(var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}
ことはできませ document.getElementsByTagName('*')
代わり:
var k = document.getElementsByTagName("*");
var j = k.length;
for (var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+k[i].tagName);
}
の 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セレクター)がカバーできないその他の文書builtins.
統一タのAPIにかかるものと思われます。場合でも document.all
の基準をかけて食べるという習慣があり不便です。
具体的には、 document.all
導入のためのIE4前 document.getElementById
が導入されていた。
その存在 document.all
このコードが対象 支援IE4, やはてブラウザの識別としてIE4ものになりますので注意してくださいオペラ)を書いた人(又はコピーや貼り付け)をコードなの。
の可能性は低いと考える場をサポートする必要があるIE4、その後、必要はありません。 document.all
(または図書館を取り扱うこれらの古代のIE仕様).
による MicrosoftのアーカイブInternet Explorer Devセンター, document.all
で推奨されていませんでIE11びす。
document.all
は今(いつからかわからない)Chromeで動作しますが、私は過去20年間、それを逃してきた....不格好document.getElementById
より簡単に短いメソッド名。わからないことは、Firefoxで動作するかどうか、それらの人は、常に新しい基準を作成する代わりに、既存のWebを受け入れ、既存のWebと互換性を持つようにする任意の欲求を持っていなかった。