2012-09-20 15 views
6

Często używam metody getElementById("id1"); w moich metodach. Używam go do znajdowania pewnych elementów w moim kodzie HTML. Zastanawiam się, czy muszę się martwić o to, ile go używam, jeśli za każdym razem musi przeszukiwać cały DOM.Czy metoda getElementById() jest wydajna?

Jak działa ta metoda? Czy parsuje DOM i zwraca element, gdy zostanie znaleziony, czy też ma wszystkie indeksowane wartości, a więc jest w stanie szybciej zwrócić?

P.S. Ciekawi mnie ogólnie metoda, ale korzystam z systemu Android WebView, jeśli ma to jakiekolwiek znaczenie.

+0

Więc nie chcesz używać [jQuery] (http://jquery.com/)? Zrobili to dla ciebie. 'getElementById (" id1 ");' == '$ ('# id1')' –

+1

Nie mogę używać biblioteki jQuery lub innych zaimportowanych bibliotek. To musi być łagodny JavaScript. Smutne, co? – Jon

+0

CO?!?! Możesz używać javascript, ale nie możesz używać javascript? –

Odpowiedz

5

getElementById jest bardzo szybki i nie powinieneś martwić się wydajnością.

Jeśli ponownie używasz tego samego identyfikatora (i wielokrotnie), możesz chcieć go zapisać w pamięci podręcznej. Przyrost wydajności jest pomijalne:

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

Sprawdź this SO answer dla niektórych benchmarkach. drodze wyniki Mike wysłana została:

IE8 getElementById: 0,4844 MS
IE8 Tablica id odnośników: 0,0062 MS

chrom getElementById: 0,0039 ms
chrom identyfikator tablicy przeglądowe: 0,0006 ms

Firefox 3.5 był porównywalny z chromem.

+3

zaniedbywalne (coś, co możesz zaniedbać)! = Pomijalne (coś tak małego, że nie można go usunąć) – Jamiec

1

Elementy z identyfikatorami są rzeczywiście indeksowane, wybór elementu przez jego ID za pomocą funkcji DOM jest najbardziej efektywnym sposobem wyboru.

Powiązane problemy