我正在编写一个Web应用程序,用于显示大量数据行(目前约2000行),每行都有一个下拉“选择”元素,其中包含约100个选项。其中任何一个选项都可以默认选择。我在客户端生成所有实际的DOM元素。我的问题是:呈现此内容需要大约4秒钟,这在我相对较新的计算机上非常不理想。我知道问题特别出现在所有选择元素上,因为用一些静态文本或单选列表替换它们会导致呈现时间几乎不可感知。
原始代码(去除失败的实验)在这里。
避免“分页数据”和“不要在选择框中使用太多选项”的建议,假设我确实有正当理由显示那么多数据并具有那么多选项,我可以编写最有效的附加/呈现代码吗? 对于我的目的,Firefox是我关心的唯一平台。
我尝试过的事情:
- 使用async loop来向表格追加行(比普通循环慢,而且奇怪的是中间结果没有渲染出来)
- 构建表示表格主体的字符串,并在单个调用中将其插入到DOM中(几乎与性能相同)
- 不是插入整个选项列表,而是插入一个单选“select”元素,然后在“select”元素获得焦点时填充整个列表(可能是因为有人试图更改它)。这对于初始渲染来说实际上是非常高效的,但是随后用完整个列表填充元素会导致一些奇怪的行为,失去焦点并永远无法“打开”选择元素。
现在我的默认假设是第三个选项是正确的方法,我需要弄清楚已经填充了什么。 但我怀疑是否有更好/更快/更惯用的方法来做到这一点。 有吗?
slickGrid
。它非常棒,会帮助你的工作。 - Gyandeep