调用变量中命名的jQuery函数

时间:2011-12-21 10:23:59

标签: javascript jquery function

我有几个jQuery函数,如 function setOne(); setTwo(); setThree();

和变量var number分别为“一”,“二”,“三”。

当数字值为“1”时,如何调用函数“setOne()”,当数字值为“2”时,如何调用“setTwo”等等......?

提前非常感谢你。任何帮助都会被贬低。

6 个答案:

答案 0 :(得分:39)

如果你的功能在全局范围内(在窗口对象上),你可以这样做:

// calls function setOne, setTwo, ... depending on number.
window["set" + number](); 

使用eval将允许您在本地范围内运行函数:

eval("set" + number + "()");

When is JavaScript's eval() not evil?

答案 1 :(得分:8)

创建name -> function地图:

var funcs = {
    'one': setOne,
    'two': setTwo
    /*...*/
};

然后用以下方法调用该函数:

funcs[number]();

答案 2 :(得分:6)

如果变量详细说明了JQuery函数的实际名称,并且您想将该函数应用于像“body”这样的DOM元素,则可以执行以下操作:

 $('body')['function-name']('params');

答案 3 :(得分:2)

如果您的功能在全球范围内,请尝试:

function setOne() {
  console.log('setOne called');
}
function setTwo() {
  console.log('setTwo called');
}
function setThree() {
  console.log('setThree called');
}

var number, funcName;

number = 'one';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setOne called

number = 'two';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setTwo called

number = 'three';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setThree called

答案 4 :(得分:1)

这很简单:

function hello(){
    alert("hello");
}
var str = "hello";
eval(str+"()");

答案 5 :(得分:0)

为什么你有三个功能?

var number;
function setNumber(n) {
    number = n;
}

setNumber(1)会将数字设置为1

setNumber(2)会将数字设置为2

ECT