2

我有一个选择,我正在使用 javascript 填充选项。就像是

    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页面后(IE在html更改后不这样做)我看到选项已添加,但分配值似乎有问题,我正在使用

select.value = theValue;
4

3 回答 3

7

使用add代替appendChild

select.add(option);

此外,使用Option构造函数可以为您节省一些代码行:

var option = new Option(data[i].name, data[i].id);
于 2013-07-09T23:12:12.500 回答
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 描述的符合标准的方法

于 2013-07-09T23:18:15.120 回答
0

问题是我从哪里获得选定的值。我正在使用 ajax 调用,而 IE(我认为)正在缓存响应。当我更改一些值时,服务器必须给我正确的选择选项,但它给了我错误的选项,因为 IE 总是读取相同的答案。

于 2013-07-10T13:55:58.710 回答