删除子节点(或元素)或设置innerHTML =“”?

时间:2013-08-06 15:55:04

标签: javascript dom

清除选择框,表格或列表等HTML元素时,删除节点(例如select.options.remove(i)table.deleteRow(i))或仅清空innerHTML(例如{ {1}})?或者重要吗?

一个示例案例是重新初始化表。特定选择字段的值应为后续HTML表加载不同的值。当选择值更改时,表格需要重新初始化。

3 个答案:

答案 0 :(得分:5)

In IE you cannot set the innerHTML of a select element。因此,对于跨浏览器解决方案,唯一的方法是添加/删除子节点。

答案 1 :(得分:2)

我做了一个没有破坏的新测试。

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

它并不完美,因为部分样本设置是测试的一部分,因此可能会导致结果偏差。

这使innerHTML更快,但我不知道多少。

答案 2 :(得分:2)

根据此对话:What is the best way to empty an node in JavaScript

似乎while (elm.firstChild) {elm.removeChild(elm.firstChild);}方法在this test中的浏览器中获得了最佳效果。

(会把它作为评论而不是答案,但是评论的速度非常快,所以我不想让它迷路。)