亲爱的专家,我对javascript很新,我经常看到编码员使用这些行互换。
document.body.getElementsByTagName();
和
document.getElementsByTagName();
有什么区别,好处?
这与FF和IE有关吗?
答案 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上运行得更快!