Javascript 在函数中启动的停止计时器

Javascript 在函数中启动的停止计时器,javascript,timer,Javascript,Timer,我已经从一个函数中启动了这个计时器,但是我不能让它以clearInterval停止,如果我再次运行该函数,它只会使它运行的速度加倍 var TimerID; function StartTimer(){ $(document).ready(function() { time=20;var Timer=document.getElementById('Timer');tmp=time; var TimerID = setInterval(function(){

我已经从一个函数中启动了这个计时器,但是我不能让它以clearInterval停止,如果我再次运行该函数,它只会使它运行的速度加倍

var TimerID;


    function StartTimer(){
    $(document).ready(function() {
    time=20;var Timer=document.getElementById('Timer');tmp=time;

    var TimerID = setInterval(function(){

                var c=tmp--,m=(c/60)>>0,s=(c-m*60)+'';
                Timer.textContent=m+':'+(s.length>1?'':'0')+s
                tmp!=0||(tmp=time);

        },1000);    



     });}

删除var TimerID=setIntervalfunction{并使其

TimerID = setInterval(function(){
使用var TimerID=setIntervalfunction{将导致TimerID成为document.ready回调函数内部的局部变量。由于它是该作用域的局部变量,因此在回调函数外部将无法访问它

删除var将允许使用回调函数作用域之外的TimerID变量,这似乎是它的意图。

删除var TimerID=setIntervalfunction{并使其生效

TimerID = setInterval(function(){
使用var TimerID=setIntervalfunction{将导致TimerID成为document.ready回调函数内部的局部变量。由于它是该作用域的局部变量,因此在回调函数外部将无法访问它


删除var将允许使用回调函数作用域之外的TimerID变量,这似乎是您的意图。

删除函数中的“var”。在函数作用域中重新定义TimerID。您希望使用全局作用域中的TimerID。

删除函数中的“var”。重新定义tim函数作用域中的erid。您希望使用全局作用域中的变量。

为了澄清这一点,删除var将在全局上下文中设置此变量,并使其基本上在代码中的任何其他地方都可用。@Scheda-在他的代码中,您可以看到他已经定义了一个TimerID变量,因此它将适用于t不重要。啊,是的。我想如果我更仔细地看它,我会知道:只是为了澄清一下,删除var将在全局上下文中设置它,并使它基本上在代码中的任何其他地方都可用。@Scheda-在他的代码中,您可以看到他已经定义了一个TimerID变量,所以它将对whic可用hever作用域不重要。啊,是的。我想如果我更仔细地观察它,我会知道:当你将关键字var添加到内部TimerID时,它给出了它的函数作用域…移除var以全局作用域它到外部TimerID。当你将关键字var添加到内部TimerID时,它给出了函数作用域…移除var以全局作用域把它移到外边。