我有两个按钮。第一个让我们看到一个延迟3秒的警报和3秒钟后的另一个警报。第二个按钮必须能够暂停setTimeout
功能。
因此,当第一个警报出现时,我点击“暂停”#39;第二个不应该出现。我知道我接近解决方案,但它仍然无法运作。我的代码是:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#start").click(function () {
setTimeout(myFunction, 3000);
setTimeout(myFunction, 6000);
});
$("#stop").click(function () {
$("myFunction").stop();
});
});
function myFunction() {
alert('Hello');
}
</script>
</head>
<body>
<p>
<button id="start">Start</button>
<button id="stop">Pause</button>
</p>
</body>
</html>
答案 0 :(得分:2)
要实现此目的,您需要存储对setTimeout()
来电的引用,然后在需要时调用clearTimeout()
。试试这个:
$(document).ready(function() {
var timers = [];
$("#start").click(function(){
timers.push(setTimeout(myFunction, 3000));
timers.push(setTimeout(myFunction, 6000));
});
$("#stop").click(function(){
timers.forEach(function(timer) {
clearTimeout(timer);
});
});
});
function myFunction() {
console.log('Hello'); // note: use console.log to debug, especially with async/blocking functions
}
答案 1 :(得分:-1)
执行此操作的最佳方法是使用Cookie进行检查。
这就是我要这样做的方式:
1. Before starting alert check if there is a cookie named for example "some_cookie" and it's value; 2. When you click on "pause" it stores value "1" in to "some_cookie"; 3. If value is "0" than run;
易。只是忙着给你写代码。如果您需要它,请告诉我。我会写。