2013-07-09 99 views
2

我有一個選擇,我正在使用JavaScript填充選項。類似於將選項添加到選擇並在Internet Explorer上選擇一個

var select = document.getElementById("selectBox"); 

    for (var i = 0; i < data.length; i++) { 
     var option = document.createElement("option"); 
     option.innerHTML = data[i].name; 
     option.value = data[i].id; 
     select.appendChild(option); 
    } 

它在Firefox和Chrome上運行良好,但在Internet Explorer上無法運行。當我檢查IE上生成的HTML我看到

<select id="selectBox"/> 

有什麼我可以做它的工作在IE瀏覽器?

編輯 刷新瞭解開發工具的html頁面(即HTML變更後並沒有這樣做),我看到選項已被添加,但似乎有一個問題分配值,我後

select.add(option); 

此外,使用Option構造可以爲您節省一些C線:使用

select.value = theValue; 
+0

你怎麼看IE上生成的HTML? – mohkhan

+0

您使用的是什麼版本的IE?它在IE9和IE10中工作正常。而且我看不到任何代碼可以阻止它在IE8中運行。 – c69

+0

在IE8中正常工作,只是經過測試。 – SomeShinyObject

回答

0

描述問題出在我得到的地方從中選擇的值。我正在使用ajax調用,IE(我認爲)緩存響應。當我改變一些值時,服務器必須給我正確的選擇選項,但它給了我一個錯誤的選擇,因爲IE總是閱讀相同的答案。

6

使用add代替appendChild米頌:

var option = new Option(data[i].name, data[i].id); 
+1

我的解決方案[完全有效](http://jsfiddle.net/Ucx2a/1 /)。我可以對downvote有一些解釋嗎? – MaxArt

+0

是的,但它的醜陋。抱歉。只是一個主觀的品味問題。與個人無關。 – c69

+0

@ c69「醜陋」?你在跟我開玩笑嗎?這是基本的JavaScript API。你應該投下一個*不好的答案*。 – MaxArt

0

你可以試試這個

的Javascript

var select = document.getElementById("selectBox"), 
    data = [{ name: "y", id: "b" }, { name: "z", id: "c" }], 
    i; 

for (i = 0; i < data.length; i += 1) { 
    var option = document.createElement("option"); 
     
    option.appendChild(document.createTextNode(data[i].name)); 
    // or alternately 
    //option.text = data[i].name; 
    option.value = data[i].id; 
    select.appendChild(option); 
} 

jsfiddle

當然還有就是符合標準的方法HTMLOptionElement.Option()由@MaxArt

+0

這是關於'