0

下面的代码为单行数组中的每个给定 ID 生成点击函数,使用未注释的代码,我得到错误“字符串不是函数”。如果我取消注释注释的代码,并注释单行数组,它确实工作得很好。但是,出于显而易见的原因,我更喜欢使用单线阵列的方法。

谁能给我一些好的建议?我在正确的道路上吗?

提前致谢。

// 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
});
4

2 回答 2

3

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

window[value]();

将等效于callme()第一次迭代,假设callme函数是全局范围的(window对象的属性)。

于 2013-04-12T13:32:01.273 回答
0

您可以尝试使用eval将字符串评估为函数,尽管您必须小心安全。评估来自用户输入或表单提交的字符串可能会使您的站点容易受到跨站点脚本会话劫持的攻击。

例子:

eval(value + "();"); //call "value" as a function
于 2013-04-12T13:34:19.313 回答