每x秒重复一次代码,但如果[在这里插入检查]则不重复

时间:2012-11-10 20:00:30

标签: javascript jquery

这是对this question的跟进,在那里我发现了如何每隔x秒重复一次代码。是否有可能制作一个可以改变这种情况的活动?即我有一个复选框,用于控制是否重复,所以我想我需要这样的东西:

$(checkbox).bind("change", function() {
    switch(whether if it is ticked or not) {
        case [ticked]:
            // Make the code repeat, while preserving the ability to stop it repeating
        case [unticked]:
            // Make the code stop repeating, while preserving the ability to start again
    }
});

我不知道我可以在case中添加什么。

3 个答案:

答案 0 :(得分:2)

您可以通过将setInterval函数指定给变量来实现。

var interval = setInterval(function() {  }, 1000);

然后你可以通过

停止setInterval
clearInterval(interval);

P.S。 要开始您的间隔,您需要再次致电var interval = setInterval(function() { }, 1000);

答案 1 :(得分:2)

您可以停止并开始间隔:

var timer;

function start() {
  timer = window.setInterval(function(){
    // do something
  }, 1000);
}

function stop() {
  window.clearInterval(timer);
}

start();

$(checkbox).bind("change", function() {
  if ($(this).is(':checked')) {
    start();
  } else {
    stop();
  }
});

或者你可以有一个标志导致间隔跳过代码:

var enabled = true;

var timer = window.setInterval(function(){
  if (!enabled) {
    // do something
  }
}, 1000);

$(checkbox).bind("change", function() {
  enabled = $(this).is(':checked');
});

答案 2 :(得分:1)

function fooFunc() {
    $('#foo').text(+new Date());
}
var id;
var shouldBeStopped = false;
$('input').change(function() {
    if (shouldBeStopped) 
        clearInterval(id);
    else 
        id = setInterval(fooFunc, 200);

    shouldBeStopped = !shouldBeStopped;
});​

Live DEMO