2012-09-20 9 views
6

多くの場合私の方法ではgetElementById("id1");というメソッドを使用します。私はHTMLで特定の要素を見つけるためにそれを使います。私は毎回DOM全体を検索しなければならない場合、どれだけ使うか心配する必要があるのだろうかと思います。getElementById()は効率的ですか?

この方法はどのように機能しますか?それはDOMを解析し、要素が見つかったときにその要素を返しますか、または何らかの方法でそれらの値がインデックスに登録されているため、より迅速に返すことができますか?

P.S.私は一般的に方法について興味がありますが、それが何か違いがあればAndroid WebViewを使用しています。

+0

だからあなたは[jQueryの](http://jquery.com/)を使用したくありませんか?彼らはあなたのためにそれをやった。 '' getElementById( "id1"); '==' $( '#id1') ' –

+1

jQueryやその他のインポートされたライブラリを使用することができません。それは穏やかなJavaScriptでなければならない。悲しい? – Jon

+0

何ですか?!?!あなたはjavascriptを使うことができますが、javascriptを使うことはできませんか? –

答えて

5

getElementByIdは非常に高速で、パフォーマンスについて心配する必要はありません。

同じIDを何度も何度も繰り返し使用している場合は、キャッシュすることができます。パフォーマンスの向上は無視できます。

var myId = getElementById("myId"); 
myId.operation1(); 
myId.operation2(); 
myId.andSome5000MoreCalls(); 

ベンチマークについては、this SO answerをチェックしてください。マイクが掲載さ 結果は以下の通りであった。

IE8 getElementByIdを:0.4844ミリ
IE8 ID配列参照:0.0062ミリ

クロームgetElementByIdを:0.0039ミリ
クロームID配列参照:0.0006ミリ

Firefox 3.5はChromeに匹敵しました。

+3

無視できるもの(無視することができるもの)!=無視できるもの(unmesurableなほど小さいもの) – Jamiec

1

IDを持つ要素は実際にインデックスされているため、DOM関数を介してそのIDで要素を選択するのが最も効率的な選択方法です。

4

実際、getElementByIdは、DOM内の要素にアクセスするための最速の方法です。インデックスは、特定のブラウザに依存しますが、ここでのベンチマークです:

http://jsperf.com/getelementbyid-vs-everyone-else