var index=0;
function canvasp() {
var array_of_functions = [canvaspoint,canvaspoint1];
array_of_functions[index++]('a string');
}
<button onclick="canvasp()">Next</button>
这里在这段代码中,我创建了一个包含两个函数的数组,并在onclick上增加数组..单击第一个函数执行的按钮,如果再次单击,第二个函数执行但仍然是第一个函数的操作仍然是...需要只有一个函数可以执行点击并增加到第二个隐藏第一个..我尝试使用for循环但不工作可以任何人帮助
答案 0 :(得分:0)
如果您想要后续点击撤消上一个功能的效果,您需要一个知道如何操作的功能。最简单的方法是将它包含在您的数组中(您应该将移动到 canvasp
函数,顺便提一下):
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');
}
}
更复杂的解决方案是具有do
和undo
属性的对象数组,并使用预增量而不是后增量:
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');
}
}
旁注:我将do
放在引号中以便对较旧的JavaScript引擎友好;当前引擎符合当前规范,关键字作为属性名称没有问题,只要它们是明确的属性名称。 (然后我为undo
做同样的事情只是为了保持一致。)