Javascript 每x秒重复一次代码,但如果[insert check here]

Javascript 每x秒重复一次代码,但如果[insert check here],javascript,jquery,Javascript,Jquery,这是一篇后续文章,我发现了如何使代码每x秒重复一次。是否有可能制作一个可以改变这一点的事件?也就是说,我有一个复选框,用来控制是否重复,所以我想我需要这样的东西: $(checkbox).bind("change", function() { switch(whether if it is ticked or not) { case [ticked]: // Make the code repeat, while preserving the ab

这是一篇后续文章,我发现了如何使代码每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
    }
});

我不知道我能在这些情况下做些什么。

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

var interval = setInterval(function() {  }, 1000);
然后你可以停止设置间隔

clearInterval(interval);
p、 美国。
要开始间隔,需要调用var interval=setIntervalfunction{},1000;同样

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

var interval = setInterval(function() {  }, 1000);
然后你可以停止设置间隔

clearInterval(interval);
p、 美国。 要开始间隔,需要调用var interval=setIntervalfunction{},1000;再次


您可以停止或启动间隔:

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');
});

您可以停止或启动间隔:

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');
});

你的另一个问题的答案似乎已经解决了这个问题。clearInterval允许您停止setInterval调用。它允许我重新启动吗?如果您使用上面的一般结构,则每当复选框更改时,它都会出现。我在我的答案中添加了一个演示,希望它能帮助您了解整个情况。看起来您的其他问题的答案已经解决了这一问题。clearInterval允许您停止setInterval调用。它允许我重新启动吗?如果您使用上面的一般结构,则每当复选框更改时,它都会停止。我在回答中添加了一个演示,希望它能帮助您了解整个情况。