如何在javascript中计算完整函数字符串(包括参数)
我有一个选择(下拉列表),其中包含与操作相对应的选项。每个操作对应于一个通用javascript函数,该函数应在select的已更改事件上调用。看起来是这样的:如何在javascript中计算完整函数字符串(包括参数),javascript,introspection,dynamic-function,Javascript,Introspection,Dynamic Function,我有一个选择(下拉列表),其中包含与操作相对应的选项。每个操作对应于一个通用javascript函数,该函数应在select的已更改事件上调用。看起来是这样的: <select id="id-select-action" class="select-action right" value="Actions"> <option class="select-title">Actions</option> <op
<select id="id-select-action" class="select-action right" value="Actions">
<option class="select-title">Actions</option>
<optgroup label="General Actions">
<option value="load_new_page('/url/to/new/page')">create a foo</option>
<option value="load_cbox('/url/to/cbox/contents')">manage tags</option>
</optgroup>
</select>
似乎每个人都讨厌eval()。但这是一个适当的情况,还是我应该做些别的?我看着这个。但是在这个例子中,您只需要处理名称,而不是完整的函数调用字符串,包括参数
我这样做的原因是,我正在为应用程序的某些类型的视图创建一个通用框架,每个页面的操作可能不同(并且具有不同的url和/或调用不同的javascript函数)
谢谢 使用此fn从字符串创建fn
function createFunctionFromString(fnName, noOfParameters) {
var _params = [];
for (i = 0; i < noOfParameters; i = i + 1) {
_params.push("p" + (i + 1));
}
var _fn = fnName ? new Function(_params.toString(","), "return " + fnName + "(" + _params.toString(",") + ");") : null;
_params.length = 0;
return _fn;
}
我想eval会有帮助的。。在这种情况下 但请注意使用eval,并检查其条件是否适合您的情况
function createFunctionFromString(fnName, noOfParameters) {
var _params = [];
for (i = 0; i < noOfParameters; i = i + 1) {
_params.push("p" + (i + 1));
}
var _fn = fnName ? new Function(_params.toString(","), "return " + fnName + "(" + _params.toString(",") + ");") : null;
_params.length = 0;
return _fn;
}
var convertedFn=createFunctionFromString($("#id-select-action option:selected").val(),'SomeInteger');
convertedFn();