2

我有个问题。当我触发此代码时:

    function addItem(){
        var select = document.getElementById("2");
        select.options.length = 0;;
        alert("Please wait...");
        for (var i = 0; i < array.length; i++) {
            select.options[select.options.length] = new Option(array[i]);
        }
        alert("Images loaded!");
    }

在 Internet Explorer 10(在 Windows 8 上)中,它的响应速度非常慢。数组中平均有 35000 个项目,但 Chrome 和 Firefox 没有这个问题......我该怎么做才能让 IE 更流畅?因为这是一个普通的浏览器...

4

1 回答 1

6

除了愚蠢的项目数量,试试这个

请注意,IE 不允许我们更改 select 的 innerHTML,因此我更改了 select 必须所在的容器的 innerHTML 以使其正常工作

function addItem(){
  var select = document.getElementById("2"); // Why a numeric ID?
  var parent = select.parentNode;
  parent.innerHTML="Please wait";
  var html='<select id="2" multiple="multiple">';
  for (var i=0,n=array.length, i<n; i++) {
    html += '<option value="'+array[i]+'">'+array[i]+'</option>';
  }
  html += '</select>'
  parent.innerHTML=html;
  alert("Images loaded!");
}

或者查看 createDocumentFragment 和 appendChild

于 2013-03-11T13:22:50.777 回答