【发布时间】:2014-10-27 09:11:58
【问题描述】:
假设我有以下 HTML 结构
<div>
<div id="foo"></div>
</div>
<div>
<div id="bar"></div>
</div>
现在我需要当我点击“foo”时,“bar”的innerHTML变成“hello”。我基本上有两种方法可以到达“bar”元素:
document.getElementById("foo").onclick=function(){
document.getElementById("bar").innerHTML="hello";
}
document.getElementById("foo").onclick=function(){
this.parentNode.nextElementSibling.firstElementChild.innerHTML="hello";
}
这两种方法/属性都是本机 DOM 的一部分,但我想知道后者是否比前者稍快,因为 getElementById 应该遍历文档的所有 ID,直到达到第一个匹配项?
【问题讨论】:
-
@Frank Dai,请考虑不仅要更快,还要考虑该代码的维护。假设将来,您想在两者之间放置一个简单的图像。然后,诸如“this.parentNode.nextElementSibling.firstElementChild.innerHTML”之类的东西将停止工作。
-
是的。我知道缓存,这种基于关系的代码很容易受到未来修改的影响。我的观点是哪种方式更快,即使差异可能小于 2-3 毫秒。
-
哪种方式“更快”无关紧要。代码没有性能问题;请参阅我对乔的回答的评论。只是不要担心它;去寻找真正受益于优化的 3% 的代码..
标签: javascript html dom browser