JavaScript - 有没有更有效的方法来创建选项元素
JavaScript - Is there a more efficient way to create option elements?
我正在尝试创建一个包含 10,000 个选项的 html 选择列表。由于数量的原因,我需要它尽可能高效。我已经让它工作了,但我认为它效率很低
var select = document.createElement("select");
document.body.appendChild(select);
for (var i = 1; i <= 10000; i++) {
var option = document.createElement("option");
var optionText = option.createTextNode("option" + i);
option.value = "option" + i;
option.appendChild(optionText);
select.appendChild(option);
}
我读过过多地查询 DOM 可能会很昂贵。有没有更简单的方法可以做到这一点?
我会从另一个角度看待这个问题。作为用户,我可能甚至可以容忍生成此列表的两秒钟(即使在糟糕的手机上也可能需要不到 2 秒的时间),但强迫我从 10k 元素的下拉列表中选择一个元素 - 这是一个矫枉过正。
我会完全放弃"创建选项",并将研究更好的(从 UI 的角度来看)方法。类似于选择自动完成的东西(这只是一个例子)。
附言如果你真的希望你的用户通过滚动 10k 元素而受苦,我建议把这部分select.appendChild(option);
排除在外。生成要追加的所有内容,并一次追加它们。
Option
构造函数:
提供了一个构造函数用于创建
HTMLOptionElement
对象(除了来自 DOM 的工厂方法,例如createElement()
):Option(text, value, defaultSelected, selected)
当作为构造函数调用时,它必须返回一个新的
HTMLOptionElement
对象(新的option
元素)。如果第一个参数不是空字符串,则新对象必须 将一个
Text
节点作为其唯一的子节点,其数据的值为 这个论点。否则,它必须没有孩子。如果存在
value
参数,则新对象 必须使用参数的值设置value
属性 作为它的价值。如果
defaultSelected
参数为真,则新的 对象必须具有没有值的selected
属性集。如果
selected
参数为真,则新对象 必须将其选择性设置为 true;否则 必须将选定性设置为 false,即使defaultSelected
论点是正确的。
在您的情况下,
select.appendChild(new Option("option" + i));
请使用innerHTML,如果你想要高性能
我在下面给你一个jsperf:
http://jsperf.com/js-appendchild/3
- jqueryui选项卡,根据数据库中的值创建选项卡
- 创建选项卡,每个选项卡有两个文本区域
- 创建选项onClick属性
- jquery ui自动完成combox重新创建选项不起作用
- 如何在创建选项时更改其背景图像
- 如何使用 JSP 创建选项卡式 Html 页面
- JavaScript - 有没有更有效的方法来创建选项元素
- Angular 创建选项卡视图而不会丢失数据
- 我正在尝试在 JavaScript 中创建选项卡式内容,但它只工作一次
- 使用 jQuery 创建选项卡
- 使用jqueryeasyui,如何通过选项卡中的链接创建选项卡
- 用于创建选项卡的javascript
- JQuery正在创建选项卡,tabs()函数出现问题
- 使用javascript为selectbox动态创建选项
- 在aspx中为应用程序表单创建选项卡
- 如何使用Javascript和Jquery创建选项卡
- 使用函数创建选项卡
- 从数组中的值创建选项元素
- 无法在html中创建选项卡面板
- Bootstrap插件创建选项按钮与任意js