在清除 HTML 元素(例如选择框、表格或列表)时,删除节点(例如 , )还是清空 innerHTML(例如 )更好select.options.remove(i)
/table.deleteRow(i)
更快select.innerHTML = ""
?还是有关系?
一个示例案例是重新初始化表。特定选择字段的值应为后续 HTML 表加载不同的值。When the select value changes, the table needs to be reinitialized.
在清除 HTML 元素(例如选择框、表格或列表)时,删除节点(例如 , )还是清空 innerHTML(例如 )更好select.options.remove(i)
/table.deleteRow(i)
更快select.innerHTML = ""
?还是有关系?
一个示例案例是重新初始化表。特定选择字段的值应为后续 HTML 表加载不同的值。When the select value changes, the table needs to be reinitialized.
在 IE 中,您不能设置选择元素的 innerHTML。因此,对于跨浏览器解决方案,唯一的方法是添加/删除子节点。
我做了一个没有损坏的新测试。
http://jsperf.com/innerhtml-vs-removechild/67
它也不完美,因为部分示例设置是测试的一部分,因此这可能会扭曲结果。
这给出了innerHTML
更快的速度,但我不知道多少。
根据此处的对话:在 JavaScript 中清空节点的最佳方法是什么
在这个测试中,该方法似乎while (elm.firstChild) {elm.removeChild(elm.firstChild);}
在浏览器中获得了最好的结果。
(本来会将此作为评论而不是答案,但评论来得太快了,所以我不希望它丢失。)