簡體   English   中英

刪除子節點(或元素)或設置innerHTML =“”?

[英]Remove child nodes (or elements) or set innerHTML=“”?

清除HTML元素(如選擇框,表或列表)時,刪除節點(例如, select.options.remove(i)table.deleteRow(i) )或僅清空innerHTML(例如, select.innerHTML = "" )? 或者重要嗎?

一個示例案例是重新初始化表。 特定選擇字段的值應為后續HTML表加載不同的值。 當選擇值更改時,需要重新初始化表。

在IE中,您無法設置select元素的innerHTML 因此,對於跨瀏覽器解決方案,唯一的方法是添加/刪除子節點。

我做了一個沒有破壞的新測試。

http://jsperf.com/innerhtml-vs-removechild/67

它並不完美,因為部分樣本設置是測試的一部分,因此這可能會使結果產生偏差。

這給了innerHTML更快,但我不知道多少。

根據這里的對話: 在JavaScript中清空節點的最佳方法是什么

似乎while (elm.firstChild) {elm.removeChild(elm.firstChild);}方法在此測試中獲得了跨瀏覽器的最佳結果。

(本來可以把它作為評論而不是答案,但評論的速度很快,所以我不想讓它迷路。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM