【发布时间】:2018-02-19 08:30:20
【问题描述】:
我有一个包含很多行的表(例如 10.000)。
(注意:我意识到拥有这么大的表没有意义,但我想了解以下行为)。
当我收到新数据时,我想先清除行。奇怪的是,清理表比从头开始构建行需要更长的时间。使用 html("") 或普通 JS innerHTML = "" 清除表行需要 1.5 分钟,这比构建行本身花费的时间不到一秒要多得多。
所以我的问题:
- 为什么删除元素比添加元素需要更多时间? “幕后”会发生什么?
(请注意,我的问题是为什么,我不是在寻找可能的解决方法)。
更新:
我注意到表格行和单元格应用了浮动定义,当我删除浮动时,表格在一个实例中被清空。
我仍然很想了解为什么浮点数会使删除行的速度慢得多。
这里有一个小提琴:https://jsfiddle.net/maaikeb/t5pduuue/
在 Chrome 中,清空表格需要 25 秒,而将其附加到 DOM 只需 23 ms。
*我阅读了下面的帖子,但他们更多地讨论了可能的解决方案,而不是为什么删除元素比添加它们需要更多时间,当你删除它们时实际会发生什么
jQuery empty is very slow
jQuery empty is very slow
What is the best way to remove a table row with jQuery?
Deleting table rows in javascript
jquery - fastest way to remove all rows from a very large table
【问题讨论】:
-
如果要替换所有行,为什么不直接删除整个表?我认为这个问题很好,需要一个答案,但我的意思是你的问题现在你可能应该考虑它:)
-
@GaneshRadhakrishnan 请在下面查看我的评论 - 显然显示有这么多行的表格没有意义,我将添加分页。我仍然想了解为什么删除元素比添加元素更需要性能
-
在哪个浏览器中?
-
你能重现这个小提琴吗? jsfiddle.net/yqc92zqd
标签: javascript jquery html performance dom