如何让eval在IE中正常运行?

时间:2009-05-29 02:22:26

标签: javascript

我有以下内容:

<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中运行不正确。

4 个答案:

答案 0 :(得分:4)

你不能做这样的事吗?

var selected_option = "one";
var options = { "one": "<option>Option Contents</option>" };
document.getElementById('price_select').innerHTML = options[selected_option];

答案 1 :(得分:2)

使用marknt15MartinodF所说的内容,您应该能够使用本机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;