我有以下内容:
<select id="price_select"></select>
我有一个调用以下内容的事件处理程序:
var selected_option = "one";
var option_one = "<option>Option Contents</option>";
document.getElementById('price_select').innerHTML = eval('option_' + selected_option);
在Firefox中运行得很好,但在IE6中运行不正确。
答案 0 :(得分:4)
你不能做这样的事吗?
var selected_option = "one";
var options = { "one": "<option>Option Contents</option>" };
document.getElementById('price_select').innerHTML = options[selected_option];
答案 1 :(得分:2)
使用marknt15和MartinodF所说的内容,您应该能够使用本机DOM操作来执行您尝试执行的操作而不使用eval()
。
var selected_option = "one";
var options = { "one": {"value": "0", "text":"OptionContents"} };
var e = document.createElement("option");
if(e.innerText) {// IE sets innerText like this
e.innerText = options[selected_option].text;
} else { // W3C sets inner text like this
e.childNodes[0].nodeValue = options[selected_option].text;
}
e.value = options[selected_option].value;
document.getElementById('price_select').appendChild(e);
您可能需要考虑使用功能齐全的JavaScript框架(如jQuery或Prototype)来使这样的事情更容易处理。
答案 2 :(得分:0)
innerHTML在IE6下拉列表中不起作用,因为它是一个错误。
eval()在IE 6中可以正常工作
答案 3 :(得分:0)
试试这个:
eval("var x= " + ('option_' + selected_option));
document.getElementById('price_select').innerHTML = x;