Javascript 在事件后而不是页面加载后启动jQuery计时器

Javascript 在事件后而不是页面加载后启动jQuery计时器,javascript,jquery,Javascript,Jquery,我正在从以下页面运行jquery计时器: 代码如下: //Timer var hms = '00:45:00'; // Time Input var a = hms.split(':'); // minutes are worth 60 seconds. Hours are worth 60 minutes. var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); //console.log(seconds); var rem

我正在从以下页面运行jquery计时器:

代码如下:

//Timer
var hms = '00:45:00';   // Time Input
var a = hms.split(':'); 
// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
//console.log(seconds);
var remainSeconds = new Date().getTime() + (seconds*1000);
$('#spanTimer').countdown(remainSeconds)
.on('update.countdown', function(event) {
        var $this = $(this);
        if (event.elapsed) {
            $this.html(event.strftime('After end: <span>%H:%M:%S</span>'));
        } else {
            $this.html(event.strftime('Time Remaining: <span>%H:%M:%S</span>'));
        }
    })
//finish.countdown callback, to hide the countdown and other actions
    .on('finish.countdown', function(){
      $(this).hide();
      $("#test").show();
    });
<div id="spanTimer"></div>
$('#spanTimer').show();
根据事件切换可见性,如下所示:

//Timer
var hms = '00:45:00';   // Time Input
var a = hms.split(':'); 
// minutes are worth 60 seconds. Hours are worth 60 minutes.
var seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); 
//console.log(seconds);
var remainSeconds = new Date().getTime() + (seconds*1000);
$('#spanTimer').countdown(remainSeconds)
.on('update.countdown', function(event) {
        var $this = $(this);
        if (event.elapsed) {
            $this.html(event.strftime('After end: <span>%H:%M:%S</span>'));
        } else {
            $this.html(event.strftime('Time Remaining: <span>%H:%M:%S</span>'));
        }
    })
//finish.countdown callback, to hide the countdown and other actions
    .on('finish.countdown', function(){
      $(this).hide();
      $("#test").show();
    });
<div id="spanTimer"></div>
$('#spanTimer').show();
问题在于计时器是从pageload开始运行的,而不是基于事件。我想在显示#spantimer div时启动计时器。这怎么可能

在插件页面中,我看到了延迟初始化的选项。但由于我是javascript新手,我无法理解它的用法以及如何实现它


请求Javascript专家的帮助。谢谢你

我们看不到触发要显示的
spanTimer
的是什么-我的意思是什么事件或动作触发了
.show()
。但不管是什么,你可以同时启动倒计时,如下所示:

$('#spanTimer').show().countdown(remainSeconds).on ...

你可以试试if语句,比如if($(“#spantimer”).is(“:visible”){execute code}@Ivan,那代码什么时候运行?@pamela有帮助吗?对不起,没有。正如我在帖子中所说,它是在页面加载而不是事件上启动的。这意味着你的
$('#spantimer').show()
也会在页面加载上发生。。。?您的
.show()
是如何触发的?@Pamela我显示的代码将在调用
.show()
的同时初始化您的倒计时。如果不是,则会发生一些有趣的事情-向我们展示代码:-)