调用变量中命名的jQuery函数

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

和一个变量var number ,分别表示“一”,“二”,“三”。

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

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

如果您的函数在全局范围内(在窗口对象上),您可以执行以下操作:

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

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

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

什么时候JavaScript的eval() 不是邪恶的?

创建name -> function图:

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

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

 funcs[number](); 

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

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

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

 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 

这很简单:

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

为什么你有三个function呢?

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

setNumber(1)将number设置为1

setNumber(2)将number设置为2

ECT