2012-09-20 50 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

忽视(你可以忽略的东西)!=可忽略的(小到无法测量的东西) – Jamiec

1

带有ID的元素确实被编入索引,通过DOM函数通过ID选择元素是最有效的选择方式。