Javascript 将选项添加到“选择”并在internet explorer上选择一个选项
我有一个select,我正在使用javascript填充选项。差不多Javascript 将选项添加到“选择”并在internet explorer上选择一个选项,javascript,html,internet-explorer,Javascript,Html,Internet Explorer,我有一个select,我正在使用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.v
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);
}
使用
add
而不是appendChild
:
select.add(option);
此外,使用选项
构造函数可以为您保存一些代码行:
var option = new Option(data[i].name, data[i].id);
你可以试试这个
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);
}
var select=document.getElementById(“selectBox”),
数据=[{name:“y”,id:“b”},{name:“z”,id:“c”}],
我
对于(i=0;i
在
当然也有@MaxArt所描述的符合标准的方法,问题是我从哪里获得所选的值。我使用的是ajax调用,IE(我想)正在缓存响应。当我更改一些值时,服务器必须给我正确的选择选项,但它给了我错误的选项,因为IE总是读取相同的答案。您如何在IE上看到生成的HTML?您使用的是哪个版本的IE?它在IE9和IE10中运行良好。我在你的代码中看不到任何东西可以阻止它在IE8中运行。在IE8中工作正常,刚刚测试过。@mohkkhan我在工具开发工具(或按F12)中看到html你的浏览器模式可能是10,但文档模式可能有点怪。。。把这个元标签放在头部分<代码>我的解决方案是。我能解释一下投票失败的原因吗?是的,但很难看。很抱歉只是主观品味的问题。没什么私事。@c69“丑陋”?你在开玩笑吧?这是基本的Javascript API。你应该投票否决一个糟糕的答案。天哪,它甚至:(现在对你的答案投赞成票。但意见是站得住脚的。@c69完成了。真的,那些
特定的方法经常被忽略。有时,甚至被W3C自己忽略了。这是关于
元素,而不是
@MaxArt,我很确定这是同一个问题,但还没有找到它的实际错误报告。因此,我将删除它。)t信息。实际上,似乎IEE中的选项存在某种奇怪的行为设置innerHTML
,基本上innerHTML
和Internet Explorer
都是尽可能避免的:微软推出的innerHTML
——是web开发的天赐之物,现在它得到了广泛的支持,甚至在移动浏览器中也是如此。在过去,IE本身在某些情况下不能正确使用它是一件很遗憾的事(使用innerHTML
,表格是另一个棘手的问题)。
var option = new Option(data[i].name, data[i].id);
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);
}