2013-01-25 48 views
0

我设置了近10+使用从Ajax调用获得的数据选择控件;以下是我的代码:在IE上动态设置选项选项

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操作有重大问题。经过Google的使用后,我优化了我的IE代码。我仍然觉得我的IE在设置选择控件时变得没有响应。 你们可以请建议我还能做些什么来改善这个问题吗?

我使用prototype.js设置的选择控制,我面临着IE的问题8/9

+0

从IE分析我看到,更新大部分时间。任何想法,如果它会改善,如果我使用jQuery呢?或者我需要照顾我错过的其他事情? – marifrahman

+0

宣布“opt”和“i”在哪里? – elclanrs

+0

也许你应该尝试一个webworker或承诺http://www.microsoftvirtualacademy.com/tracks/developing-html5-apps-jump-start按照课程no 5. –

回答

-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); 
    } 
+0

你真的认为每次添加每个元素将提高性能?!! – marifrahman

+0

也许我应该在IE上测试它 – notXX

0

在我的经验,使用innerHTML此最适合IE,所以尽量使用与普通的DOM脚本组合:

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

JSFiddle

+0

它在IE上工作吗?用于Select的innerHTML在IE上有已知的问题。 – marifrahman

0

尝试使用内置的由原型提供的方法 - 例如

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); 

这会在选择DOM元素的副本并插入在选择所有选项,然后替换选择。

+0

不适合我。唐认为这是一个好主意。 – marifrahman

+0

你可以添加一个你正在将这个应用到你的问题上面的HTML代码片段。除了ajax调用的一些值,我们可以测试它 –

+0

从我的ajax调用返回的列表看起来很像:[['option name 1','option value 1'],[ '选项名称2','选项值2']] – marifrahman