我有几个jQuery函数,如
function setOne();
setTwo(); setThree();
和变量var number
分别为“一”,“二”,“三”。
当数字值为“1”时,如何调用函数“setOne()”,当数字值为“2”时,如何调用“setTwo”等等......?
提前非常感谢你。任何帮助都会被贬低。
答案 0 :(得分:39)
如果你的功能在全局范围内(在窗口对象上),你可以这样做:
// calls function setOne, setTwo, ... depending on number.
window["set" + number]();
使用eval
将允许您在本地范围内运行函数:
eval("set" + number + "()");
答案 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