据说DOM遍历的成本很高,所以你应该尽可能避免使用它。 但是,我认为,通过id检索DOM元素必须是非常低的成本,因为大多数浏览器可能有一个表,它在内部将元素与id相关联。 因此,几乎总是,我们可以忽略此操作的性能成本。 这是错的吗?
感谢。
答案 0 :(得分:2)
Chrome和Firefox似乎会为ID创建一个地图,但至少从ie8开始,似乎资源管理器仍然存在性能问题。 Mike Blandford运行了一些基准测试,至少暗示IE没有使用数组映射,因此其性能受到严重影响:
JavaScript: document.getElementById slow performance?
引用:
他继续说FF与铬很相似。当然,在大多数情况下,0.5毫秒都不用担心,但是对于大树和频繁调用它可能会成为一个问题(有些人指出,你可以让JS为基于ID的元素创建一个缓存系统,这将显着改善某些浏览器的性能)。以下是结果(对于包含10,000个元素的页面):
IE8 getElementById:0.4844 ms IE8 id array lookup:0.0062 ms
Chrome getElementById:0.0039 ms Chrome ID阵列查找:0.0006 ms