这是对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
中添加什么。
答案 0 :(得分:2)
您可以通过将setInterval函数指定给变量来实现。
var interval = setInterval(function() { }, 1000);
然后你可以通过
停止setIntervalclearInterval(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;
});