14

私は自分のメソッドでメソッドをよく使用しgetElementById("id1");ます。これを使用して、HTML 内の特定の要素を見つけます。毎回DOM全体を検索する必要がある場合、どれだけ使用するかを気にする必要があるのだろうか。

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

PS私は一般的にこの方法に興味がありますが、違いがあればAndroid WebViewを使用しています。

4

3 に答える 3

17

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

同じIDを何度も(そして何度も)使用している場合は、それをキャッシュすることをお勧めします。パフォーマンスの向上は無視できます。

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

いくつかのベンチマークについては、このSOの回答を確認してください。マイクが投稿した結果は次のとおりです。

IE8 getElementById:0.4844ミリ秒
IE8 id配列ルックアップ:0.0062ミリ秒

Chrome getElementById:0.0039ミリ秒
Chrome ID配列ルックアップ:0.0006ミリ秒

Firefox3.5はクロームに匹敵しました。

于 2012-09-20T14:40:40.573 に答える
6

実際getElementById、DOM 内の要素にアクセスする最速の方法です。インデックス作成は特定のブラウザによって異なりますが、ベンチマークは次のとおりです。

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

于 2012-09-20T14:41:54.387 に答える
3

IDを持つ要素には実際にインデックスが付けられます。DOM関数を使用してIDで要素を選択するのが、最も効率的な選択方法です。

于 2012-09-20T14:38:50.630 に答える