动态设置IE上的选择选项

时间:2013-01-25 06:16:10

标签: javascript internet-explorer dom select prototypejs

我使用从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在设置Select控件时变得没有响应一段时间。 你们能否建议我还能做些什么来改善这个问题?

我正在使用prototype.js来设置选择控件,我在IE 8/9上遇到了问题

3 个答案:

答案 0 :(得分:0)

根据我使用innerHTML的经验,这最适合IE,因此请尝试将其与纯DOM脚本结合使用:

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

JSFiddle

答案 1 :(得分: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。

答案 2 :(得分:-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);
  }