2012-09-20 15 views
6

A menudo uso el método getElementById("id1"); en mis métodos. Lo uso para encontrar ciertos elementos en mi HTML. Me pregunto si debo preocuparme por cuánto uso si tiene que buscar todo el DOM todo el tiempo.¿Es eficiente getElementById()?

¿Cómo funciona este método? ¿Analiza el DOM y devuelve el elemento cuando se encuentra, o tiene todos esos valores indexados de alguna manera y por lo tanto puede regresar más rápidamente?

P.S. Tengo curiosidad sobre el método en general, pero estoy usando Android WebView si eso hace la diferencia.

+0

Así que no quieran utilizar [jQuery] (http://jquery.com/)? Lo hicieron por ti. 'getElementById (" id1 ");' == '$ ('# id1')' –

+1

No puedo usar jQuery u otras bibliotecas importadas. Tiene que ser sosa JavaScript. Triste, ¿eh? – Jon

+0

¿QUÉ?!?! Puedes usar javascript pero no puedes usar javascript? –

Respuesta

5

getElementById es muy rápido y no debe tener que preocuparse por el rendimiento.

Si está utilizando la misma ID una y otra vez (y una y otra vez) de nuevo, es posible que desee almacenarla en caché. La ganancia de rendimiento es despreciable:

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

Comprobar this SO answer de algunos puntos de referencia. El resultado Mike publicado eran:

IE8 getElemenById: 0,4844 ms
IE8 gama Identificación de búsqueda: 0,0062 ms

Chrome GetElementByID: 0,0039 ms
Chrome matriz Identificación de búsqueda: 0,0006 ms

Firefox 3.5 era comparable a Chrome.

+3

neglectable (algo que puede descuidar)! = Insignificante (algo tan pequeño como para ser no mensurable) – Jamiec

1

Los elementos con ID están indexados, seleccionar un elemento por su ID a través de la función DOM es la forma más eficiente de selección.

Cuestiones relacionadas