14

我经常getElementById("id1");在我的方法中使用该方法。我用它来查找我的 HTML 中的某些元素。我想知道如果它每次都必须搜索整个 DOM,我是否需要关心我使用了多少。

这种方法是如何工作的?它是解析 DOM 并在找到元素时返回它,还是它以某种方式索引了所有这些值,因此能够更快地返回?

PS我对一般的方法很好奇,但如果这有什么不同,我正在使用Android WebView。

4

3 回答 3

17

getElementById速度非常快,您不必担心性能。

如果您一遍又一遍地(一遍又一遍地)使用相同的 ID,您可能需要缓存它。性能增益可以忽略不计:

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

检查this SO answer以获取一些基准。迈克发布的结果是:

IE8 getElementById:0.4844 毫秒
IE8 id 数组查找:0.0062 毫秒

Chrome getElementById:0.0039 毫秒
Chrome id 数组查找:0.0006 毫秒

Firefox 3.5 与 chrome 相当。

于 2012-09-20T14:40:40.573 回答
6

实际上getElementById是访问 DOM 中元素的最快方式。索引取决于特定的浏览器,但这里有一个基准:

http://jsperf.com/getelementbyid-vs-everyone-else

于 2012-09-20T14:41:54.387 回答
3

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

于 2012-09-20T14:38:50.630 回答