名为jQuery的功能,我有几个jQuery的功能就像 function setOne(); setTwo(); setThree();
调用一个变量
和可变var number
分别值“一”,“二”,“三化”。
当数字值为“1”时,如何调用函数“setOne()”,当数字值为“2”时如何调用函数“setTwo”等...?
非常感谢你提前。任何帮助都会有所帮助。
名为jQuery的功能,我有几个jQuery的功能就像 function setOne(); setTwo(); setThree();
调用一个变量
和可变var number
分别值“一”,“二”,“三化”。
当数字值为“1”时,如何调用函数“setOne()”,当数字值为“2”时如何调用函数“setTwo”等...?
非常感谢你提前。任何帮助都会有所帮助。
如果你有在全球范围内的功能(window对象),你可以做:
// calls function setOne, setTwo, ... depending on number.
window["set" + number]();
并使用eval
将允许你在本地范围内运行函数:
eval("set" + number + "()");
到目前为止最好的回答。 +1 – Tigraine 2011-12-21 10:32:32
最好的回答,我接受这个,简单而有用,你确切地知道我的意思!谢谢!如果你想要你可以投我的问题。 – bobighorus 2011-12-21 10:39:02
'this [“set”+ number]();'不起作用。只有'setX'是任何'this'引用的属性,但是如果'setX'是一个局部变量,则不会。 – 2011-12-21 10:43:22
创建name -> function
图:
var funcs = {
'one': setOne,
'two': setTwo
/*...*/
};
然后调用与功能:
funcs[number]();
其实AndreasAL的答案是更好的答案。人们需要明白,在JavaScript中,一切都是字典,甚至函数只能在全局范围字典中以这种方式访问。 – Tigraine 2011-12-21 10:33:24
感谢您的答案Felix,但它好像是一个开关迭代。我需要一个像set + number +()这样的自动解决方案,这意味着setOne(); 。我希望我很清楚。 – bobighorus 2011-12-21 10:34:56
@Tigraine:它只有在功能是全球性的时候才起作用,这通常不是一个好主意(全球名字空间污染)。 – 2011-12-21 10:37:16
为什么你对那三个功能?
var number;
function setNumber(n) {
number = n;
}
setNumber(1)
将设置数为1
setNumber(2)
将设置数量为2
ECT
谢谢你回答,但我认为你不明白我的问题... :) – bobighorus 2011-12-21 10:40:05
前提是你的功能在全球范围内,尝试:
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+"()");
是的,但我必须调用一个函数! – bobighorus 2011-12-21 10:40:29
@bobighorus这个调用函数hello()...使用'var str =“One”;''eval(“set”+ str +“()”);'例如。你甚至可以通过这种方式设置*命名参数...''eval(“set”+ str +“(parameterName)”);' – 2011-12-21 10:52:40
如果变量详细说明了JQuery函数的实际名称和您想要将该功能应用于DOM元素(如“body”),您可以执行以下操作:
$('body')['function-name']('params');
对我来说看起来像普通的JavaScript函数。 – 2011-12-21 10:28:22