Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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 函数的停止方法_Javascript_Jquery - Fatal编程技术网

Javascript 函数的停止方法

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

我有一个小函数,它每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;
      }
      $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
  }
};