Javascript jQuery销毁和创建计时器函数。如何销毁?

Javascript jQuery销毁和创建计时器函数。如何销毁?,javascript,jquery,timer,bootstrap-modal,Javascript,Jquery,Timer,Bootstrap Modal,我编写了一些代码,每当用户在按下SaveChanges后关闭一个模式窗口时,都可以重置和重新启动计时器 我遇到的问题是,当我第二次打开模式并第二次按Save Changes时,它会关闭,但会在第一个计时器上启动第二个计时器。此效果无限期叠加。 我如何更改代码以销毁第一个计时器,并根据需要创建第二个计时器等等 谢谢你的帮助 模式JavaScript代码 $(document).on('click', '#btn-modal1-save-changes', function (e) { //$(th

我编写了一些代码,每当用户在按下SaveChanges后关闭一个模式窗口时,都可以重置和重新启动计时器

我遇到的问题是,当我第二次打开模式并第二次按Save Changes时,它会关闭,但会在第一个计时器上启动第二个计时器。此效果无限期叠加。

我如何更改代码以销毁第一个计时器,并根据需要创建第二个计时器等等

谢谢你的帮助

模式JavaScript代码

$(document).on('click', '#btn-modal1-save-changes', function (e) {
//$(this.form).submit();
    alert('btn-modal1-save-changes Click for #modal1 Event fired.');
//$('#modal1').modal('hide');
    $('#total-clock').timer();
});
计时器JQuery自定义函数

// Timer Custom function
jQuery.prototype.timer = function() {

    // Timer variable for setInterval.
    var timer;

    // Target html tag for timer
    var htmlTag = (this);

    // Integer increment    
    var i = 0;

    // Activate Timer   
    timer = setInterval(function() {

        // Always increment by 1;
        i++;

        // Output...
        htmlTag.text(i.toHHMMSS());

    }, 1000); // ..every 1 second(s)
};


// Format String Custom function
// Input type MUST BE INTERGER.
Number.prototype.toHHMMSS = function () {

    var seconds = Math.floor(this),
    hours = Math.floor(seconds / 3600);
    seconds -= hours*3600;
    var minutes = Math.floor(seconds / 60);
    seconds -= minutes*60;

    if (hours   < 10) {hours   = "0"+hours;}
    if (minutes < 10) {minutes = "0"+minutes;}
    if (seconds < 10) {seconds = "0"+seconds;}

    return hours+':'+minutes+':'+seconds;

}   
//计时器自定义函数
jQuery.prototype.timer=函数(){
//setInterval的计时器变量。
无功定时器;
//计时器的目标html标记
var htmlTag=(此);
//整数增量
var i=0;
//启动计时器
计时器=设置间隔(函数(){
//始终递增1;
i++;
//输出。。。
text(i.toHHMMSS());
},1000);/…每1秒
};
//格式化字符串自定义函数
//输入类型必须是整数。
Number.prototype.toHHMMSS=函数(){
var秒=数学地板(本),
小时=数学楼层(秒/3600);
秒-=小时*3600;
var分钟=数学地板(秒/60);
秒-=分钟*60;
如果(小时<10){hours=“0”+小时;}
如果(分钟<10){minutes=“0”+分钟;}
如果(秒<10){seconds=“0”+秒;}
返回时数+':'+分钟+':'+秒;
}   
在函数中使用jquery的clearInterval(),然后调用函数停止

样品

function stopInterval(){
   clearInterval(timer);
}

您需要将计时器存储为一个变量,即使
jQuery.prototype.timer
已完成执行,也可以访问该变量。 一个很好的方法是将其作为键存储在
jQuery
对象中,作为
jQuery.customTimer

我已经修改了您的
jQuery.prototype.timer
函数来使用它,如下所示

// Timer Custom function
jQuery.prototype.timer = function() {
    // Target html tag for timer
    var htmlTag = (this);

    // Integer increment
    var i = 0;

    // Clear old timer if exists
    if (jQuery.customTimer)
        clearInterval(jQuery.customTimer);

    // Create timer
    jQuery.customTimer = setInterval(function() {
        // Always increment by 1;
        i++;

        // Output...
        htmlTag.text(i.toHHMMSS());
    }, 1000); // ..every 1 second(s)
};

我懂了!和。。您打算称它为customTimer,还是指timer?我打算称它为
customTimer
,因为它是一个保存
setInterval
结果的变量太神了此变量的作用域最远为jQuery.prototype.timer=function(){…很担心,对吗?是的!这只是一种通过多次执行函数来访问它的简单方法。我知道这是不是要求太多,但是,如果我有一个名为#total clock的html标记,我如何将customTimer结果附加到一个总数,然后在#total clock标记上显示这个总数?