2013-01-25 75 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