调用变量中命名的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