【发布时间】:2010-02-05 14:29:30
【问题描述】:
我正在做一个项目,我有一堆函数,我想在单击按钮时按特定顺序逐个调用它们。一旦执行了一个功能,我不想再次使用,我想继续下一个。
另一位 S.O 用户建议我需要使用数组,但我仍在学习 jQuery 并且不确定如何做到这一点,谁能让我朝着正确的方向开始?
非常感谢。
【问题讨论】:
我正在做一个项目,我有一堆函数,我想在单击按钮时按特定顺序逐个调用它们。一旦执行了一个功能,我不想再次使用,我想继续下一个。
另一位 S.O 用户建议我需要使用数组,但我仍在学习 jQuery 并且不确定如何做到这一点,谁能让我朝着正确的方向开始?
非常感谢。
【问题讨论】:
假设你有这样的功能:
function foo() { doSomeStuff; }
function bar() { doSomeOhterStuff; }
或者,另一种但相同的语法:
var foo = function() { doSomeStuff; }
var bar = function() { doSomeOhterStuff; }
然后您可以从这些函数名称中创建一个数组并对其进行迭代:
var functions = ['foo', 'bar'];
for(var i = 0; i <= functions.length; i++) {
window[functions[i]]();
}
或者您可以将函数直接传递给数组:
var functions = [foo, bar];
for(var i = 0; i <= functions.length; i++) {
func();
}
将它们插入数组的顺序决定了它们的执行顺序,每个函数只会执行一次。希望这会有所帮助。
【讨论】:
示例代码:
function fnc1(){/* some code in here */};
function fnc2(){/* some code in here */};
function fnc3(){/* some code in here */};
var fncs = [ fnc1, fnc2, fnc3 ];
$("buttonId").click(function(){
var currentFunction = (fncs.shift()); // removes first element from array
if(currentFunction){
currentFunction();
}else{
alert('No more functions available');
}
});
【讨论】:
var inarr = [func1,func2,func3];
for (afunc in inarr) {
afunc();
}
【讨论】: