Javascript 如何循环函数数组并在单击时一次执行一个 var指数=0; 函数canvasp(){ 函数的var数组_=[canvaspoint,canvaspoint1]; _函数的数组[index++]('a string'); } 下一个
在这段代码中,我创建了一个包含两个函数的数组,并在单击时递增数组。单击按钮时,第一个函数执行,如果再次单击,则第二个函数执行,但第一个函数的op仍然保留。我只需要一个函数在单击时执行,然后递增到第二个隐藏第一个。我尝试了使用for循环但不工作,有人能帮忙吗Javascript 如何循环函数数组并在单击时一次执行一个 var指数=0; 函数canvasp(){ 函数的var数组_=[canvaspoint,canvaspoint1]; _函数的数组[index++]('a string'); } 下一个,javascript,jquery,html,arrays,function,Javascript,Jquery,Html,Arrays,Function,在这段代码中,我创建了一个包含两个函数的数组,并在单击时递增数组。单击按钮时,第一个函数执行,如果再次单击,则第二个函数执行,但第一个函数的op仍然保留。我只需要一个函数在单击时执行,然后递增到第二个隐藏第一个。我尝试了使用for循环但不工作,有人能帮忙吗 chk this fiddle如果您想在以后单击以撤消上一个函数的效果,则需要一个知道如何执行该操作的函数。最简单的方法是将其包含在数组中(您应该将其移出canvasp函数,顺便说一句): 旁注:我将do放在引号中,以便于老的JavaScr
chk this fiddle如果您想在以后单击以撤消上一个函数的效果,则需要一个知道如何执行该操作的函数。最简单的方法是将其包含在数组中(您应该将其移出
canvasp
函数,顺便说一句):
旁注:我将
do
放在引号中,以便于老的JavaScript引擎使用;当前的引擎符合当前的规范,如果关键字是明确的属性名,那么关键字作为属性名是没有问题的。(然后我对undo
做了同样的操作,只是为了保持一致。)你的问题的标题和内容不匹配。询问如何循环函数之间有很大区别,以及如何进行后续单击在执行之前撤消上一个函数的效果。非常抱歉,感谢您的更正。感谢@T.J crowder。我尝试使用您的代码,但撤消功能仅在第一个函数中无效runs@DeebanChakravarthi:索引周围出现错误,奇怪的是,我刚刚修复了它…@DeebanChakravarthi:我在评论之前修复了它。我现在也尝试了,它不起作用。你能帮我纠正一下我做错了什么吗@DeebanChakravarthi:好吧,首先,你没有在任何地方定义撤销功能?!
var index=0;
function canvasp() {
var array_of_functions = [canvaspoint,canvaspoint1];
array_of_functions[index++]('a string');
}
<button onclick="canvasp()">Next</button>
var index=0;
var array_of_functions = [
canvaspoint,
function(str) {
undoCanvasPoint(str/* if needed */);
canvaspoint1(str);
}
];
function canvasp() {
if (index < array_of_functions.length) {
array_of_functions[index++]('a string');
}
}
var index=-1;
var array_of_functions = [
{
"do": canvaspoint,
"undo": undoCanvaspoint
},
{
"do": canvaspoint1,
"undo": undoCanvaspoint1
}
];
function canvasp() {
if (index >= 0) {
array_of_functions[index]["undo"]('a string if needed');
}
++index;
if (index < array_of_functions.length) {
array_of_functions[index++]["do"]('a string');
}
}