jquery:使用字符串作为函数(错误:字符串不是函数)

时间:2013-04-12 13:29:32

标签: javascript jquery arrays string each

下面的代码为单行数组中的每个给定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
});

2 个答案:

答案 0 :(得分:3)

这取决于范围,但一般的想法是你可以使用方括号表示法来获取对函数的引用并执行它。例如,以下内容:

window[value]();
假设callme()函数是全局范围的(callme对象的属性),

对于第一次迭代将等效于window

答案 1 :(得分:0)

您可以尝试使用eval来评估字符串作为函数,尽管您必须谨慎安全。评估来自用户输入或表单提交的字符串可能会使您的网站容易受到cross-site scriptingsession hijacking的攻击。<​​/ p>

示例:

eval(value + "();"); //call "value" as a function