2012-09-20 51 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選擇元素是最有效的選擇方式。