Javascript 调用函数onclick start和onclick stop

Javascript 调用函数onclick start和onclick stop,javascript,jquery,Javascript,Jquery,我正在使用下面的功能来启动和停止旋转。基本上,我正在尝试添加一个自动旋转按钮,并尝试了下面的方法,但它不起作用。启动功能起作用,但停止不起作用 var nIntervId; this._onAutoSpin = function(){ s_oGame.onSpin(); nIntervId = setInterval(this._onAutoSpin, 10 * 1000); }; this._offAutoSpin = function(){ clearInterval(nInt

我正在使用下面的功能来启动和停止旋转。基本上,我正在尝试添加一个自动旋转按钮,并尝试了下面的方法,但它不起作用。启动功能起作用,但停止不起作用

var nIntervId;
this._onAutoSpin = function(){
  s_oGame.onSpin();
  nIntervId = setInterval(this._onAutoSpin, 10 * 1000);
};

this._offAutoSpin = function(){
  clearInterval(nIntervId);
};

尝试使用
setTimeout
而不是
setInterval
,因为
setInterval
每次都会创建一个新计时器,而不会破坏最后一个计时器

var nIntervId;
this._onAutoSpin = function(){
  s_oGame.onSpin();
  nIntervId = setTimeout(this._onAutoSpin, 10 * 1000);
};

this._offAutoSpin = function(){
  clearTimeout(nIntervId);
};

问题在于,每次触发新的时间间隔时,您都会递归地启动它,因此您只会停止最新的计时器,而不是前一个计时器

要修复此问题,请更改逻辑,以便不存在可能的递归,并且只运行一个间隔:

函数Foo(){
var nIntervId;
这是。_onAutoSpin=function(){
nIntervId=setInterval(this.\u doAutoSpin,1*1000);//为演示而修改
}
这是。_doAutoSpin=函数(){
console.log('spinning…');
};
这是。_offAutoSpin=函数(){
console.log('stopped');
clearInterval(nIntervId);
};
}
var foo=new foo();
foo._onAutoSpin();

设置超时(foo._offAutoSpin,5000);//5秒钟后停止
任何人请帮助我。谢谢,请分享你的站点function@SaurabhJhunjhunwala这是一个很好的回答问题。是的,我试过setTimeout(),但它只运行了两次。我必须处理这个onclick按钮,我可以看到它只运行了5次。onAutoSpin()应该递归调用,直到我停止它。它只运行了5次,因为我使用了
setTimeout()
在5秒后自动停止计时器。我编辑了答案,向您展示了如何递归调用,如果您愿意这样做,谢谢Rory,我正在尝试你的代码,并在几分钟内更新你在单独的html文件工作,但不是在我的老虎机游戏工作。可能是我做错了什么。我在查。谢谢你的帮助。