我知道訪問和操作DOM可能非常昂貴,所以我想盡可能有效地做到這一點。我的情況是,某個div總是包含一個項目列表,但有時候我想用一組完全不同的項目來刷新該列表。在這種情況下,我可以創建新列表並將其附加到該div,但我也需要清除列表。最好的方法是什麼?將innerHTML設置爲空字符串?迭代子節點並調用「removeChild」?還有別的嗎?刪除HTML元素的所有子元素的更有效方法是什麼?
3
A
回答
6
對QuirksMode看看。這可能需要一些挖掘,但是在不同的瀏覽器中只需要這些操作。雖然測試是在一年多前完成的,但在大多數瀏覽器中,設置爲innerHTML
到""
是最快的。
P.S. here是該頁面。
0
將innerHTML設置爲空字符串。
0
強調可能是昂貴。它並不總是昂貴的;事實上,在處理少量元素時,它可能是微不足道的。記住,優化應該總是最後完成,並且只有在你有明確的證據證明你想要改進的特定方面真的是你的性能瓶頸之後。
如果可能,我建議避免使用innerHTML;很容易搞砸了,並且爲DOM做了一些令人討厭的事,你無法從優雅中恢復過來。
這種方法是病例的99.9%相當快的,除非你是從DOM移除大規模層次大塊:
while(ele.childNodes.length > 0) {
ele.removeChild(ele.childNodes[ele.childNodes.length - 1])
}
0
我建議在你關心的瀏覽器上測試幾個實現。不同的JavaScript引擎具有不同的性能特徵,不同的DOM操作方法在不同引擎上具有不同的性能。謹防過早優化並提防瀏覽器的差異。
相關問題
- 1. 刪除所有子元素的樣式
- 2. 什麼是獲取HashMap中元素子集的有效方法?
- 3. 如何使用DOMDocument刪除body元素的所有子元素?
- 4. 刪除所有元素\ html,但輸入
- 5. 從另一個數組中刪除一個數組的所有元素的最有效方法是什麼?
- 6. 刪除無父元素的HTML元素
- 7. 刪除容器外的所有元素?
- 8. 刪除元素的所有onclick事件
- 9. 刪除選擇中的所有元素
- 10. 無法刪除()html元素
- 11. 刪除具有匹配子元素的XML文件的元素
- 12. 從HTML元素的子元素中刪除連續HTML元素之一
- 13. 刪除是所選元素
- 14. jQuery刪除所有空元素爲li的元素
- 15. 如何刪除選定元素之後的所有元素?
- 16. 從數組中刪除唯一元素的最有效方法
- 17. 無法刪除元素的所有孩子與特定類
- 18. 刪除元素時,它有一個指定的子元素
- 19. 如何刪除沒有屬性和子元素的元素?
- 20. 什麼是從IE中刪除DOM元素的最快方法?
- 21. 什麼是刪除佈局元素的最佳方法
- 22. 刪除陣列中沒有子項的所有元素
- 23. 有沒有辦法跟蹤HTML元素的所有更改?
- 24. Python刪除除一個之外的所有子元素
- 25. 在Beautifulsoup4,獲取元素的所有子元素,而不是子元素的子元素
- 26. 刪除子元素
- 27. 清除元素上所有僞類的最簡單方法是什麼?
- 28. 編碼CDATA元素的有效方法
- 29. 使用xlinq刪除所有空元素
- 30. 通過classname刪除所有span元素?
我會認爲最簡單的方法搞砸和做一些令人討厭的DOM將編寫的代碼來操縱它。我看不出如何改變innerHTML會做什麼壞事,特別是如果DOM對應用程序沒有任何興趣。 – 2009-02-06 06:31:16