Javascript 在不使用jQuery的情况下,通过包含函数的数组反转循环方向
我有下面的Javascript,其目的是使用Javascript 在不使用jQuery的情况下,通过包含函数的数组反转循环方向,javascript,arrays,function,Javascript,Arrays,Function,我有下面的Javascript,其目的是使用事件监听器执行的数组函数,使用户能够在许多菜单中前后循环 var i = 0; var steps = [ function one() {do something}, function two() {do something}, function three() {do something}, function four() {do something}, function five() {do something} ] //lo
事件监听器执行的数组函数,使用户能够在许多菜单中前后循环
var i = 0;
var steps = [
function one() {do something},
function two() {do something},
function three() {do something},
function four() {do something},
function five() {do something}
]
//loops forward through array *successfully*
document.getElementById('forward').addEventListener("click", function() {
steps[i]();
}
//loops backwards through array *unsuccessfully*
document.getElementById('backward').addEventListener("click", function() {
steps[i]().reverse();
}
第一个eventListener
函数成功地循环了数组
,但是第二个eventListener
函数向后,却未能反向循环数组(这一点并不奇怪)
首先,我不确定如何反向循环包含函数的数组
其次,我想知道是否可以从数组中的特定点反向循环数组
;本质上,如果数组已循环通过,并且只执行了函数三(),是否有一个脚本允许用户向后循环到函数二(),然后是函数一(),然后再向前循环
在这里,我已经阅读了一些有关数组.reverse()的StackOverflow问题,但是我发现没有一个问题与函数的存在和/或数组中的循环反转有关
谢谢你的回答,非常感谢 我认为您不需要在阵列上循环。您需要“管理状态”,这意味着您可以增加和减少i
。更新状态后,使用步骤[i]
找到正确的函数并调用它
var-activeMenuIndex=0;
变量步骤=[
函数1(){console.log(“激活菜单1”)},
函数2(){console.log(“激活菜单2”)},
函数3(){console.log(“激活菜单3”)},
函数4(){console.log(“激活菜单4”)},
函数5(){console.log(“激活菜单5”)}
];
var activateCurrentMenu=函数(){
var activator=步骤[activeMenuIndex];
if(激活剂){
激活剂();
}否则{
log(“越界!”);
}
};
var nextMenu=函数(){
//TODO:检查是否有越界
activeMenuIndex+=1;
激活当前菜单();
};
var prevMenu=函数(){
//TODO:检查是否有越界
activeMenuIndex-=1;
激活当前菜单();
};
document.getElementById('forward')。addEventListener(“单击”,下一个菜单);
document.getElementById('backward').addEventListener(“单击”,预览菜单)代码>
返回
接下来
我认为您不需要在阵列上循环。您需要“管理状态”,这意味着您可以增加和减少i
。更新状态后,使用步骤[i]
找到正确的函数并调用它
var-activeMenuIndex=0;
变量步骤=[
函数1(){console.log(“激活菜单1”)},
函数2(){console.log(“激活菜单2”)},
函数3(){console.log(“激活菜单3”)},
函数4(){console.log(“激活菜单4”)},
函数5(){console.log(“激活菜单5”)}
];
var activateCurrentMenu=函数(){
var activator=步骤[activeMenuIndex];
if(激活剂){
激活剂();
}否则{
log(“越界!”);
}
};
var nextMenu=函数(){
//TODO:检查是否有越界
activeMenuIndex+=1;
激活当前菜单();
};
var prevMenu=函数(){
//TODO:检查是否有越界
activeMenuIndex-=1;
激活当前菜单();
};
document.getElementById('forward')。addEventListener(“单击”,下一个菜单);
document.getElementById('backward').addEventListener(“单击”,预览菜单)代码>
返回
接下来
这就是你要找的吗?循环通过数组
var步骤=[
函数一(){console.log(“1”)},
函数2(){console.log(“2”)},
函数三({console.log(“3”)},
函数4(){console.log(“4”)},
函数5(){console.log(“5”)}
]
//通过数组向前循环
功能前进(一){
slice(0,i).forEach(函数(el){el();});
}
//通过反向的aarray向后循环
功能反向(一){
steps.reverse().slice(0,i).forEach(函数(el){el();});
}
转发(3);
向后(3)代码>这就是你要找的吗?循环通过数组
var步骤=[
函数一(){console.log(“1”)},
函数2(){console.log(“2”)},
函数三({console.log(“3”)},
函数4(){console.log(“4”)},
函数5(){console.log(“5”)}
]
//通过数组向前循环
功能前进(一){
slice(0,i).forEach(函数(el){el();});
}
//通过反向的aarray向后循环
功能反向(一){
steps.reverse().slice(0,i).forEach(函数(el){el();});
}
转发(3);
向后(3)代码>你在这里的意图不是很清楚。你能说得更具体些吗?最好是使用?我看不到任何循环…,让您的函数写入控制台,这样您就可以看到您正在做什么检查,看看这是否有帮助。如果是,请让我知道,以便我可以张贴它作为一个答案。另外,如果这是您所期望的,我建议您再次阅读您的问题,看看这是否是您在问题中描述的内容。:)你在这里的意图不是很清楚。你能说得更具体些吗?最好是使用?我看不到任何循环…,让您的函数写入控制台,这样您就可以看到您正在做什么检查,看看这是否有帮助。如果是,请让我知道,以便我可以张贴它作为一个答案。另外,如果这是您所期望的,我建议您再次阅读您的问题,看看这是否是您在问题中描述的内容。:)