Javascript 在后台停止计数器

Javascript 在后台停止计数器,javascript,jquery,countdown,Javascript,Jquery,Countdown,我正在使用以下脚本: 我用它在不同的屏幕上创建不同的倒计时,除了一个大问题外,一切都很好 当我开始倒计时并让它结束时,一切都正常,但是如果我创建了2:00倒计时,移动到下一个屏幕,再创建一个5:00倒计时,当2:00倒计时结束时,它会启动end回调函数。我想避免这种行为 我知道计数器正在运行,尽管屏幕上看不到它。要将屏幕更改为第二个计数器,用户必须单击一个div,它有一个click事件 通过这个click事件,我试图破坏倒计时,但我只能从DOM中删除计数器。倒计时仍然有效,并在到达0时执行结束函

我正在使用以下脚本:

我用它在不同的屏幕上创建不同的倒计时,除了一个大问题外,一切都很好

当我开始倒计时并让它结束时,一切都正常,但是如果我创建了2:00倒计时,移动到下一个屏幕,再创建一个5:00倒计时,当2:00倒计时结束时,它会启动end回调函数。我想避免这种行为

我知道计数器正在运行,尽管屏幕上看不到它。要将屏幕更改为第二个计数器,用户必须单击一个
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和变量启动第二个计数器,那么第一个倒计时就是影响第二个计数器的第一个倒计时。我需要真正停止计数器,因为第二个计数器可以得到自己的值,而不受第一个计数器的影响。谢谢