Javascript 函数的停止方法
我有一个小函数,它每100ms向数组中的元素添加一个类Javascript 函数的停止方法,javascript,jquery,Javascript,Jquery,我有一个小函数,它每100ms向数组中的元素添加一个类 var index = 0; var $pcs = $('.participant'); var setWinCls = { start: function(i){ if(i>0){ $pcs.eq(i-1).removeClass('winner'); } if(i == $pcs.length){ i=0; } $pc
var index = 0;
var $pcs = $('.participant');
var setWinCls = {
start: function(i){
if(i>0){
$pcs.eq(i-1).removeClass('winner');
}
if(i == $pcs.length){
i=0;
}
$pcs.eq(i).addClass('winner');
setTimeout(function() { setWinCls.start(i+1) },100);
},
stop: function () {
...
}
};
我试图定义stop方法,它将停止在元素上添加类,并停止在最后添加的元素或我将指向的元素上添加类。有什么建议吗?
我尝试使用返回false
,但没有效果。在setWinCls
中添加一个标志(停止
),并使用停止
方法将其更改为真
。只要stopped
为false
,将调用setTimeout
:
var $pcs = $('.participant');
var setWinCls = {
stopped: false, // the flag
start: function(i) {
if (i > 0) {
$pcs.eq(i - 1).removeClass('winner');
}
if (i == $pcs.length) {
i = 0;
}
$pcs.eq(i).addClass('winner');
// if stopped is false, setTimeout will be called
this.stopped || setTimeout(function() {
setWinCls.start(i + 1)
}, 100);
},
stop: function() {
this.stopped = true; // changing stopped to true
}
};