2012-09-20 19 views
6

Ich verwende oft die Methode getElementById("id1"); in meinen Methoden. Ich verwende es, um bestimmte Elemente in meinem HTML zu finden. Ich frage mich, ob ich mir Sorgen darüber machen muss, wie oft ich es benutze, wenn es jedes Mal das gesamte DOM durchsuchen muss.Ist getElementById() effizient?

Wie funktioniert diese Methode? Analysiert es das DOM und gibt das Element zurück, wenn es gefunden wird, oder werden all diese Werte irgendwie indiziert und kann es schneller zurückkehren?

P.S. Ich bin neugierig auf die Methode im Allgemeinen, aber ich benutze ein Android WebView, wenn das einen Unterschied macht.

+0

Sie wollen also nicht verwenden [jQuery] (http://jquery.com/)? Sie haben es für dich getan. 'getElementById (" id1 ");' == '$ ('# id1')' –

+1

Ich kann jQuery oder andere importierte Bibliotheken nicht verwenden. Es muss langweiliges JavaScript sein. Traurig, nicht wahr? – Jon

+0

WAS?!?! Sie können Javascript verwenden, aber Sie können kein Javascript verwenden? –

Antwort

5

getElementById ist sehr schnell und Sie sollten sich keine Sorgen über die Leistung machen.

Wenn Sie dieselbe ID immer wieder (und wieder und wieder) verwenden, möchten Sie sie möglicherweise zwischenspeichern. Der Leistungsgewinn ist vernachlässigbaren:

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

prüfen this SO answer für einige Benchmarks. Die Ergebnisse Mike geschrieben waren:

IE8 getElementByld: 0,4844 ms
IE8 id Array-Lookup: 0,0062 ms

Chrome getElementByld: 0,0039 ms
Chrome-ID-Array-Lookup: 0,0006 ms

Firefox 3.5 war vergleichbar mit Chrom.

+3

vernachlässigbar (etwas, was Sie vernachlässigen können)! = Vernachlässigbar (etwas so klein wie unmessbar) – Jamiec

1

Elemente mit IDs sind tatsächlich indiziert, die Auswahl eines Elements anhand seiner ID über die DOM-Funktion ist die effizienteste Art der Auswahl.