将大量子元素附加到大量元素时的 JavaScript 性能

标签 javascript jquery performance

我在一个页面上有很多选择输入(96 或 384)。每个都有一个广泛的选项列表——几乎 1000 个。因此页面的大小在 4-8MB 之间(压缩后 1-4MB)。我决定通过只放置一次选项列表然后使用 JavaScript 将其添加到每个输入来加快页面加载速度。

不幸的是,浏览器要么需要大量时间来完成任务(在 FF 10 上大约需要 3 分钟),要么挂起(Chrome 17)。我试图用 jQuery 和纯 JS 来完成任务。完全没有区别。

任务可行吗?要编写快速高效的 JavaScript,我应该知道什么?

Screenshot

编辑:我将所有选项放在一个字符串中,并使用 innerHTML 将其放入选择输入。感谢您的快速回复。

Edit2:我按照 Diodeus 建议的方式生成元素。但是,我在选择元素处于焦点时加载选项(感谢 rlemon)。我相信所有答案都非常有帮助,并且对于遇到类似问题的任何人都可能有值(value)。谢谢你们。

最佳答案

将您的 HTML 构建为字符串或单个对象,然后一次性将其全部注入(inject)该页面。 DOM 重写很慢,因为必须为每次插入计算文档重流。

关于将大量子元素附加到大量元素时的 JavaScript 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467522/

相关文章:

javascript - 创建正则表达式来忽略 .goutputstream 文件

javascript - 如何停止允许或阻止减号多次输入文本框?

javascript - 我如何在 jQuery 中执行此操作? (匹配一个特定的词并使其成为一种颜色)

javascript - 什么是计算实际(网页)页面加载时间的可靠方法

ruby-on-rails - 如何查明是什么减慢了我的 Rails 应用程序

javascript - 来自 CSS 和 jQuery 的意外结果

javascript - jQuery 转义特殊字符失败

javascript - 如何选择包含类名实例的链接?

c - 循环内的 strcat() 与 sprintf()

Javascript/Jquery - 太多递归