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

尝试使用 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 回答
0

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

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

JSFiddle

于 2013-01-25T06:38:03.863 回答
-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 回答