讓我首先說我不是JavaScript開發人員,所以這個問題可能是比較基礎的。getElementsByTagName(「*」)的性能影響是什麼?
當模擬IE的非標準all
屬性我使用getElementsByTagName("*")
,這兩種方法之間是否有顯着的性能差異?
讓我首先說我不是JavaScript開發人員,所以這個問題可能是比較基礎的。getElementsByTagName(「*」)的性能影響是什麼?
當模擬IE的非標準all
屬性我使用getElementsByTagName("*")
,這兩種方法之間是否有顯着的性能差異?
基本上應該沒有明顯的性能影響,並且無論如何使用document.all
是不可接受的。
然而,有一個問題,關於爲什麼你會有興趣收集每一個元素的集合嗎?我想不出一個用於另一個用例的用例,而這個用例不能以另一種方式更好地處理。
不是一個真正的性能暗示,但值得注意的是:從getElementsByTagName返回的nodeList爲live。如果你操縱DOM,那麼列表也將改變以反映這一點。
爲了興趣,你可能會發現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庫規避了這個缺陷,但是你真的應該使用一個來避免跨瀏覽器的麻煩。
不同的瀏覽器和不同版本的瀏覽器有不同的性能特徵。如果您操縱大型DOM,則應在您關心的瀏覽器上進行基準測試。考慮使用Javascript庫benchmarks。他們演示了不同瀏覽器的性能可能會有所不同。所以如果不知道你使用的是什麼瀏覽器,這個問題就不會真正負責。但是,您也應該警惕過度優化某些東西,而這些東西可能會在大多數機器上爲大多數人實際上花費零時間。
用例可能是您希望爲符合標準的xhtml文檔中的所有href設置'target'屬性的地方 – KooiInc 2009-02-03 11:05:02
另一個用例可以在這裏找到http://stackoverflow.com/questions/435429/browser- agnostic-c-dom-interface/483736#483736 – Motti 2009-02-03 12:40:54