Javascript 在后台停止计数器
我正在使用以下脚本: 我用它在不同的屏幕上创建不同的倒计时,除了一个大问题外,一切都很好 当我开始倒计时并让它结束时,一切都正常,但是如果我创建了2:00倒计时,移动到下一个屏幕,再创建一个5:00倒计时,当2:00倒计时结束时,它会启动end回调函数。我想避免这种行为 我知道计数器正在运行,尽管屏幕上看不到它。要将屏幕更改为第二个计数器,用户必须单击一个Javascript 在后台停止计数器,javascript,jquery,countdown,Javascript,Jquery,Countdown,我正在使用以下脚本: 我用它在不同的屏幕上创建不同的倒计时,除了一个大问题外,一切都很好 当我开始倒计时并让它结束时,一切都正常,但是如果我创建了2:00倒计时,移动到下一个屏幕,再创建一个5:00倒计时,当2:00倒计时结束时,它会启动end回调函数。我想避免这种行为 我知道计数器正在运行,尽管屏幕上看不到它。要将屏幕更改为第二个计数器,用户必须单击一个div,它有一个click事件 通过这个click事件,我试图破坏倒计时,但我只能从DOM中删除计数器。倒计时仍然有效,并在到达0时执行结束函
div
,它有一个click
事件
通过这个click事件,我试图破坏倒计时,但我只能从DOM中删除计数器。倒计时仍然有效,并在到达0时执行结束函数
我需要手动停止用户点击事件的倒计时。我已经查看了代码好几天了,但是我不知道怎么做
我是这样使用倒计时的:
$(文档).ready(函数(){
valor_tiempo_f13=10;
$('#pf-ag-fase1-start')。单击(函数(){
//empezar计划
log('Programa-iniciado');
//倒计时
$('quesito')。循环计数({
延迟时间:500,
尺寸:160,
fontColor:“#fff”,
色圈:“#2a292f”,
背景:“#2a292f”,
反向阅读:错误,
持续时间:{
小时:0,
分钟:0,
秒:valor_tiempo_f13
},
beforeStart:function(){
},
结束:函数(倒计时){
倒计时;
$('.launcher').show();
$(“#面部抗衰老-2-ADA”).addClass('active');
log('Programa terminado');
}
});
});
$('#停止')。单击(函数(){
log('需要真正停止倒计时');
});
});代码>
#停止{
背景:#ccc;
位置:绝对位置;
左:20%;
底部:10%;
}
开始
停止
如果您坚持使用此计数器,您可能有两种选择之一
1) 破解代码库并添加一个.stop()方法或类似的方法,这样您就可以绑定到其中并暂停或停止现有计数器
2) 添加一个在其他单击事件上设置的标志,这样您就可以签入“end:”方法。基本上,它不会阻止“end”方法运行,但它只会跳过所有逻辑
$(document).ready(function() {
var continue_timer = true;
valor_tiempo_f13 = 10;
$('#pf-ag-fase1-start').click(function() {
//empezar programa
console.log('Programa iniciado');
// Run the countdown
$('#quesito').circularCountDown({
delayToFadeIn: 500,
size: 160,
fontColor: '#fff',
colorCircle: '#2a292f',
background: '#2a292f',
reverseLoading: false,
duration: {
hours: 0,
minutes: 0,
seconds: valor_tiempo_f13
},
beforeStart: function() {
},
end: function(countdown) {
// continue_timer gets set to "false" when your other timer is created
if (continue_timer === true) {
countdown.destroy();
$('.launcher').show();
$('#facial-antiaging-2-finalizada').addClass('active');
console.log('Programa terminado');
}
}
});
});
$('#stop').click(function() {
// set our flag to false so our end method doesn't do anything.
continue_timer = false;
// Hide the initial timer or whatever you want to do
$('#quesito').hide();
console.log('needs to really stop the countdown');
});
});
谢谢你的回复。第二种解决方案似乎有效,但经过一些测试后,它根本不起作用。计数器似乎作为全局变量在后台工作。如果同一时间只有一个计数器在运行,则此代码可以解决此问题。如果我使用不同的ID和变量启动第二个计数器,那么第一个倒计时就是影响第二个计数器的第一个倒计时。我需要真正停止计数器,因为第二个计数器可以得到自己的值,而不受第一个计数器的影响。谢谢