我的要求是动态加载HTML下拉列表。
`
<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中快速运行。
或者是否可以在后台加载并显示加载消息。
发布于 2015-06-25 12:38:05
试试这个吧。快得多
小提琴
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;
}发布于 2015-06-25 12:36:08
如果通过构建文本并设置innerHTML来做到这一点,则几乎不需要任何时间。小提琴键。
var selectText = "<select>";
for (var i = 0; i < 6000; ++i)
selectText += "<option value=" + i + ">Option " + i;
selectText += "</select>"
document.getElementById("main").innerHTML = selectText;发布于 2015-06-25 12:51:28
它正在构建一个庞大的选项列表,然后追加它需要时间。首先将元素添加到父div,然后将选项添加到它的中:
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
}
}https://stackoverflow.com/questions/31050466
复制相似问题