首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE : HTML选择具有巨大的选项,在加载过程中花费大量时间

IE : HTML选择具有巨大的选项,在加载过程中花费大量时间
EN

Stack Overflow用户
提问于 2015-06-25 12:30:49
回答 3查看 1K关注 0票数 0

我的要求是动态加载HTML下拉列表。

`

代码语言:javascript
复制
<html>
  <head>
    <script type="text/javascript">
        function addSelectBox()
        {
            var parentDiv = document.getElementById ("main");
            var selectElement = document.createElement ("select");
            for (var i=0;i < 6000;i++)
            {
                var option = new Option ("Option --- " + i, "Value" + i);
                selectElement.options[selectElement.options.length] = option;
            }
            parentDiv.appendChild (selectElement);
        }
    </script>
  </head>
  <body>
    <div id="main">
        <input type="button" onclick="addSelectBox()" 
         name="clickme" value="Add Select Box" />
    </div>
  </body>
</html>

`

在上面的代码中,在单击按钮时,我使用选项创建下拉菜单并将其添加到div中。

这在Firefox和Chrome中花费的时间非常少(2-5秒)。但是当我在(11)上运行它时,需要超过20秒。

在加载时,页面会挂起,它也会阻止其他操作。

请找到jsfiddle 这里

有没有其他的方法,所以它可以在IE中快速运行。

或者是否可以在后台加载并显示加载消息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-25 12:38:05

试试这个吧。快得多

小提琴

代码语言:javascript
复制
function addSelectBox(){
   var parentDiv = document.getElementById ("main");
   var selectElement = '<select>';
   for (var i=0;i < 6000;i++) {
     selectElement+= '<option value="'+i+'">---- ' + i+'</option>';
   }
   selectElement += '</select>';
   parentDiv.innerHTML+=selectElement;
}
票数 2
EN

Stack Overflow用户

发布于 2015-06-25 12:36:08

如果通过构建文本并设置innerHTML来做到这一点,则几乎不需要任何时间。小提琴键。

代码语言:javascript
复制
var selectText = "<select>";
for (var i = 0; i < 6000; ++i)
    selectText += "<option value=" + i + ">Option " + i;
selectText += "</select>"
document.getElementById("main").innerHTML = selectText;
票数 1
EN

Stack Overflow用户

发布于 2015-06-25 12:51:28

它正在构建一个庞大的选项列表,然后追加它需要时间。首先将元素添加到父div,然后将选项添加到它的中:

代码语言:javascript
复制
function addSelectBox(){
   var parentDiv = document.getElementById ("main");
   var selectElement = document.createElement ("select");

   parentDiv.appendChild (selectElement); // ADD FIRST

   for (var i=0;i < 6000;i++)
   {
        var option = new Option ("Option ---- " + i, "Value" + i);

        selectElement.appendChild(option); // ADD OPTIONS TO IT
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31050466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档