如何停止setInterval?

时间:2011-12-12 14:44:40

标签: javascript jquery html

<span id="ccc">10</span> <span id="start">start</span> <span id="stop">stop</span>

$('#start').click(function(){
    var c = $('#ccc').text();
         var inter =   setInterval(function() {
                    c--;
                    $('#ccc').text(c);
            }, 1000);
}); 

$('#stop').click(function(){
     clearInterval(inter);
    });

我必须如何重写才能正确使用STOP?

现场:http://jsfiddle.net/c3hZh/

3 个答案:

答案 0 :(得分:5)

inter需要在两个函数的范围内。用闭包包装这两个函数,以避免使用新变量污染全局命名空间。

(function ($) {
  var inter;

  $('#start').click(function(){
    var c;
    c = parseInt($('#ccc').text()); //make sure you're getting a numeric value
    //don't forget to clear any existing interval before setting a new one:
    if (inter) {
      clearInterval(inter);
    }
    inter = setInterval(function() {
      c--;
      $('#ccc').text(c);
    }, 1000);
  });

  $('#stop').click(function() {
    clearInterval(inter);
  });
}(jQuery));

答案 1 :(得分:3)

inter是一个局部变量 它在你的回调之外不存在。

您需要使用全局变量。

答案 2 :(得分:2)

var inter = 0;
$('#start').click(function(){
    var c = $('#ccc').text();
         inter =   setInterval(function() {
                    c--;
                    $('#ccc').text(c);
            }, 1000);
}); 

$('#stop').click(function(){
     clearInterval(inter);
    });