2013-07-09 52 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

这是关于'