2009-02-03 99 views

回答

2

基本上应该没有明显的性能影响,并且无论如何使用document.all是不可接受的。

然而,有一个问题,关于为什么你会有兴趣收集每一个元素的集合吗?我想不出一个用于另一个用例的用例,而这个用例不能以另一种方式更好地处理。

+0

用例可能是您希望为符合标准的xhtml文档中的所有href设置'target'属性的地方 – KooiInc 2009-02-03 11:05:02

+0

另一个用例可以在这里找到http://stackoverflow.com/questions/435429/browser- agnostic-c-dom-interface/483736#483736 – Motti 2009-02-03 12:40:54

0

不是一个真正的性能暗示,但值得注意的是:从getElementsByTagName返回的nodeList为live。如果你操纵DOM,那么列表也将改变以反映这一点。

7

为了兴趣,你可能会发现John Resig的这个讲座很有意思。当使用像你一样的dom方法时,它与新用户和有经验的用户相关。

它讨论的许多浏览器的DOM方法很多可爱的注意事项。

一个这样的,是getElementsByTagName(“*”)将在IE5返回没有元素,并使用对象+ getElementsByTagName("*") IE7下,并根据对话确实weird things,它使这个:

<a id="length"></a> 

执行,就好像有人已完成:

var a = getElementsByTagName("a"); 
    a.length = ""; # This overrides the arrays length attribute :/ 

因此,您不能迭代数组。

我不知道哪个javascript库规避了这个缺陷,但是你真的应该使用一个来避免跨浏览器的麻烦。

0

不同的浏览器和不同版本的浏览器有不同的性能特征。如果您操纵大型DOM,则应在您关心的浏览器上进行基准测试。考虑使用Javascript库benchmarks。他们演示了不同浏览器的性能可能会有所不同。所以如果不知道你使用的是什么浏览器,这个问题就不会真正负责。但是,您也应该警惕过度优化某些东西,而这些东西可能会在大多数机器上为大多数人实际上花费零时间。