6

在清除 HTML 元素(例如选择框、表格或列表)时,删除节点(例如 , )还是清空 innerHTML(例如 )更好select.options.remove(i)/table.deleteRow(i)更快select.innerHTML = ""?还是有关系?

一个示例案例是重新初始化表。特定选择字段的值应为后续 HTML 表加载不同的值。When the select value changes, the table needs to be reinitialized.

4

3 回答 3

5

在 IE 中,您不能设置选择元素的 innerHTML。因此,对于跨浏览器解决方案,唯一的方法是添加/删除子节点。

于 2013-08-06T16:21:55.257 回答
3

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

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

它也不完美,因为部分示例设置是测试的一部分,因此这可能会扭曲结果。

这给出了innerHTML更快的速度,但我不知道多少。

于 2013-08-06T16:14:55.453 回答
2

根据此处的对话:在 JavaScript 中清空节点的最佳方法是什么

在这个测试中,该方法似乎while (elm.firstChild) {elm.removeChild(elm.firstChild);}在浏览器中获得了最好的结果。

(本来会将此作为评论而不是答案,但评论来得太快了,所以我不希望它丢失。)

于 2013-08-06T16:25:57.003 回答