清除选择框,表格或列表等HTML元素时,删除节点(例如select.options.remove(i)
,table.deleteRow(i)
)或仅清空innerHTML(例如{ {1}})?或者重要吗?
一个示例案例是重新初始化表。特定选择字段的值应为后续HTML表加载不同的值。当选择值更改时,表格需要重新初始化。
答案 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中的浏览器中获得了最佳效果。
(会把它作为评论而不是答案,但是评论的速度非常快,所以我不想让它迷路。)