Javascript表达式“document.body.getElementsByTagName();” vs“document.getElementsByTagName();”

时间:2010-03-19 19:38:23

标签: javascript dom

亲爱的专家,我对javascript很新,我经常看到编码员使用这些行互换。

document.body.getElementsByTagName();

document.getElementsByTagName();

有什么区别,好处?

这与FF和IE有关吗?

4 个答案:

答案 0 :(得分:7)

区别在于背景。在第一个示例中,您正在查看body标记内部,这意味着您永远无法检索body标记本身或该标记之外的任何其他元素

在第二个示例示例中,您可以检索任何内容。

与特定浏览器无关。

答案 1 :(得分:1)

第一个只会对身体元素进行排序,即:如果文档格式正确,则不是头部元素。第二个将对您在头部或头部存在的所有元素进行排序。

答案 2 :(得分:0)

如上所述,差异在于背景。

第一行将搜索在body标记内发生的给定标记名称的所有元素。

第二行搜索整个文档中出现的给定标记名称的所有元素。

随着上下文的出现速度:如果您可以尽可能缩小搜索范围,您将更快地找到您的元素,并且您的应用程序将表现更好。

随着您的文档变得更加复杂,您会注意到这样的事情:

document.getElementById('foo').getElementsByTagName('span')

将比普通的

明显更快地开始

document.getElementsByTagName('div')

另外,在缩小范围时,您将获得较少的结果,这意味着通过DOM节点寻找您希望操作的节点的迭代次数较少。

答案 3 :(得分:0)

http://jsperf.com/document-body-getelementsbytagname1告诉ajm错了,  document.getElementsByTagName('*');  在FF上运行得更快!