Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何循环函数数组并在单击时一次执行一个 var指数=0; 函数canvasp(){ 函数的var数组_=[canvaspoint,canvaspoint1]; _函数的数组[index++]('a string'); } 下一个_Javascript_Jquery_Html_Arrays_Function - Fatal编程技术网

Javascript 如何循环函数数组并在单击时一次执行一个 var指数=0; 函数canvasp(){ 函数的var数组_=[canvaspoint,canvaspoint1]; _函数的数组[index++]('a string'); } 下一个

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

在这段代码中,我创建了一个包含两个函数的数组,并在单击时递增数组。单击按钮时,第一个函数执行,如果再次单击,则第二个函数执行,但第一个函数的op仍然保留。我只需要一个函数在单击时执行,然后递增到第二个隐藏第一个。我尝试了使用for循环但不工作,有人能帮忙吗


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');
    }
}