2009-02-03 152 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。他們演示了不同瀏覽器的性能可能會有所不同。所以如果不知道你使用的是什麼瀏覽器,這個問題就不會真正負責。但是,您也應該警惕過度優化某些東西,而這些東西可能會在大多數機器上爲大多數人實際上花費零時間。

相關問題