我经常在我的方法中使用方法getElementById("id1");
。我用它在我的HTML中查找某些元素。我想知道如果每次都搜索整个DOM,我是否需要关心它的使用量。getElementById()是否有效?
此方法如何工作?它是否解析DOM并在找到元素时返回该元素,还是它具有以某种方式索引的所有这些值,并且能够更快地返回?
P.S.我对通常的方法很好奇,但是如果这有什么不同,我正在使用Android WebView。
我经常在我的方法中使用方法getElementById("id1");
。我用它在我的HTML中查找某些元素。我想知道如果每次都搜索整个DOM,我是否需要关心它的使用量。getElementById()是否有效?
此方法如何工作?它是否解析DOM并在找到元素时返回该元素,还是它具有以某种方式索引的所有这些值,并且能够更快地返回?
P.S.我对通常的方法很好奇,但是如果这有什么不同,我正在使用Android WebView。
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相媲美。
忽视(你可以忽略的东西)!=可忽略的(小到无法测量的东西) – Jamiec
带有ID的元素确实被编入索引,通过DOM函数通过ID选择元素是最有效的选择方式。
事实上,getElementById
是访问DOM中元素的最快方式。索引依赖于特定的浏览器,但这里是它的一个风向标:
所以,你不希望使用[jQuery的](http://jquery.com/)?他们为你做了。 'getElementById(“id1”);'=='$('#id1')' –
我无法使用jQuery或其他导入的库。它必须是平淡的JavaScript。伤心吧? – Jon
什么?!?!你可以使用JavaScript,但你不能使用JavaScript? –