我经常getElementById("id1");
在我的方法中使用该方法。我用它来查找我的 HTML 中的某些元素。我想知道如果它每次都必须搜索整个 DOM,我是否需要关心我使用了多少。
这种方法是如何工作的?它是解析 DOM 并在找到元素时返回它,还是它以某种方式索引了所有这些值,因此能够更快地返回?
PS我对一般的方法很好奇,但如果这有什么不同,我正在使用Android WebView。
我经常getElementById("id1");
在我的方法中使用该方法。我用它来查找我的 HTML 中的某些元素。我想知道如果它每次都必须搜索整个 DOM,我是否需要关心我使用了多少。
这种方法是如何工作的?它是解析 DOM 并在找到元素时返回它,还是它以某种方式索引了所有这些值,因此能够更快地返回?
PS我对一般的方法很好奇,但如果这有什么不同,我正在使用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 毫秒Chrome getElementById:0.0039 毫秒
Chrome id 数组查找:0.0006 毫秒Firefox 3.5 与 chrome 相当。
实际上getElementById
是访问 DOM 中元素的最快方式。索引取决于特定的浏览器,但这里有一个基准:
带有 ID 的元素确实是有索引的,通过 DOM 函数通过其 ID 选择元素是最有效的选择方式。