下面的代码为单行数组中的每个给定ID生成单击函数,使用未注释的代码,我得到错误"string is not a function“。如果我取消注释已注释的代码,并注释单行数组,它确实工作得很好。然而,与我相比,我更喜欢使用单行数组的方法,原因很明显。
有人能给我一些好的建议吗?我走的路对吗?
提前谢谢。
// callme
function callme() {
alert("call me");
return true;
}
// create javascript object
//var adapter = {};
// set values - key contains: ID associated with link, button or tab - value contains: the function to call
//adapter['callme'] = callme;
//adapter['callme1'] = callme1;
//adapter['callme2'] = callme2;
//adapter['callme3'] = callme3;
var adapter = ["callme", "callme1", "callme2", "callme3"];
// foreach the object - key as ID - value as associated function
$.each(adapter, function(index, value) {
// click on listed ID
$("#"+ value).click(function() {
// call associated function
value();
});
// end foreach
});发布于 2013-04-12 21:32:01
这在一定程度上取决于作用域,但总体思路是,您可以使用方括号表示法来获取对函数的引用并执行它。例如,以下内容:
window[value]();假设callme函数的作用域是全局的( window对象的一个属性),则在第一次迭代中将等同于callme()。
发布于 2013-04-12 21:34:19
您可以尝试使用eval将字符串作为函数进行求值,但在安全性方面必须小心。评估来自用户输入或表单提交的字符串可能会使您的站点容易受到cross-site scripting和session hijacking的攻击。
示例:
eval(value + "();"); //call "value" as a functionhttps://stackoverflow.com/questions/15972673
复制相似问题