我使用从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上遇到了问题
答案 0 :(得分:0)
根据我使用innerHTML
的经验,这最适合IE,因此请尝试将其与纯DOM脚本结合使用:
document.querySelector('#select_ctrl_id').innerHTML = opt.join('');
答案 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);
}