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 に答える