0

Ajax 呼び出しから取得したデータを使用して、ほぼ 10 以上の Select コントロールを設定しています。以下は私のコードです:

function arrayToOptionList(list) {

    var optList = [];
    for (i = 0; i < list.length; i++) {
        optList.push("<option value ='" + list[i][1] + "' >" + list[i][0] + "</option>");
    }

    return optList.join("");

}

 opt = arrayToOptionList(list);
 $("select_ctrl_id").update(opt);

IE には dom 操作に関する重大な問題があることを知っています。そして、グーグルで数回調べた後、IE用にコードを最適化しました。選択コントロールを設定すると、IE がしばらくの間応答しなくなります。問題を改善するために他に何ができるか教えてください。

選択コントロールを設定するためにprototype.jsを使用していますが、IE 8/9で問題に直面しています

4

3 に答える 3

0

私の経験innerHTMLでは、これを IE で使用するのが最適なので、単純な DOM スクリプトと組み合わせて使用​​してみてください。

document.querySelector('#select_ctrl_id').innerHTML = opt.join('');

JSFiddle

于 2013-01-25T06:38:03.863 に答える
0

Prototype が提供する組み込みメソッドを使用してみてください - たとえば

var select = $("select_ctrl_id").clone();
list.each(function(i){
    select.insert(new Element('option',{'value':i[1]}).update(i[0]));
});
$("select_ctrl_id").replace(select);

これにより、select DOM 要素のコピーが作成され、select にすべてのオプションが挿入されてから、select が置き換えられます。

于 2013-01-25T17:37:52.167 に答える
-3

昔ながらの方法を試してくださいhttp://www.w3schools.com/jsref/met_select_add.asp

var x=document.getElementById("mySelect");
var option=document.createElement("option");
option.text="Kiwi";
try
  {
  // for IE earlier than version 8
  x.add(option,x.options[null]);
  }
catch (e)
  {
  x.add(option,null);
  }
于 2013-01-25T06:21:12.617 に答える