在循环中运行setInterval()计时器-jQuery/JS
Running a setInterval() timer in a loop - jQuery/JS
我有一个setInterval()
计时器,用于运行进度条。现在,当计时器结束或按下特定按钮时,我想取消计时器,对页面进行一些更改,然后重新启动整个计时器功能。显然,在这种情况下,正常的for()
循环将不起作用,因为我想等到计时器完成或按下按钮。
这是代码:
$(document).ready(function(){
score = 0;
question_counter = 1;
var counter = 25;
var num_q = 5;
for(var x=0; x < num_q; x++){
//Loop the timer function here
}
function timer_loop(){
var interval = setInterval(function() {
counter--;
$("#timer").attr("style","width: "+ ((counter/25)*100) +"%;");
$("#timeleft").html("TIME LEFT <b>" + counter + "s</b>")
if(counter < 20 && counter > 15){
$("#timer").attr("class","progress-bar progress-bar-success");
}else if(counter < 15 && counter > 6){
$("#timer").attr("class","progress-bar progress-bar-warning");
}else if(counter < 6){
$("#timer").attr("class","progress-bar progress-bar-danger");
beep();
}
if (counter == 0) {
$("#q_header").html("Question " + question_counter);
question_counter++;
clearInterval(interval);
}
}, 1000);
$(".btn").click(function(event){
$(".btn").prop("disabled", true);
console.log($(this).id);
score = score + counter;
$("#scoreshow").html("CURRENT SCORE <b>" + score + "</b>")
clearInterval(interval);
counter = 25;
$(".btn").prop("disabled", false);
});
}
});
如何实现这种"定时器循环"?
编辑
这基本上适用于"问答"应用程序,其中计时器运行"x"秒,在此期间,如果用户回答,剩余时间将添加到他/她的分数中,下一个问题将显示为"重新设置"计时器。如果计时器已经用完,则显示下一个问题,而不添加分数和"重新设置"计时器。
感谢@Barmar的简单回答
只需从两个位置移除clearInterval()
,它就可以完美工作。正如正确地说的,与setTimeout()
相比,setInterval()
无论如何都是一个循环。
相关文章:
- 在Jquery倒计时计时器上设置每个数字的动画
- 如何在隐藏时暂停jquery计时器
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- 计时器在使用 jQuery 一分钟后没有触发,或者每 1 分钟后给出一些其他解决方案来触发功能
- 我需要JS/jQuery中的倒计时计时器
- jQuery幻灯片Down&然后在计时器上向上滑动
- 基于一天中的时间的不均匀计数计时器Jquery
- 点击事件的 jQuery 计时器
- 简单的 Jquery 计时器,同时使用分钟和秒
- 为显示/隐藏消息 Jquery 添加计时器 intervar
- Jquery on按钮点击做计时器和进度条
- jQuery重置setInterval计时器
- jQuery显示setTimeout计时器
- jQuery计时器对输入不起作用
- jQuery倒计时计时器部分隐藏
- jQuery进度计时器栏
- 在循环中运行setInterval()计时器-jQuery/JS
- 每 1 分钟启动一次计时器 Jquery
- 设置时间倒计时计时器jquery
- 具有延迟、重置和重新启动的计时器?jQuery