Javascript简单计时器不能正常工作

时间:2016-02-14 16:23:42

标签: javascript

请帮我处理我的代码。我的问题是当计时器完成时,它显示-1:60而不是显示0:00。我尝试了不同的其他方式,但是徒劳无功。当我将if语句中的条件更改为x> 0时,计时器不会从0:60下降。任何帮助将不胜感激。我尝试了不同的其他,如果是其他声明,没有任何帮助 先感谢您。

<h1  id='session' onClick='general()'>2</h1>

JS:

 var seconds=60;
 var x=document.getElementById('session').innerHTML-1;
 var t;

 function timer(){
   if(x>=0){
      seconds--; 
      if(seconds<10){
         seconds='0'+seconds;
        };
       if(seconds==0){
           x--;
          seconds=60;
         }
        }
    document.getElementById('session').innerHTML=x+':'+seconds;
 }

  function stoptimer(){
       clearInterval(t);
   }

    var on=true;
       function general(){
          if(on){  
                 on=false;
                t = setInterval(timer,200);
          }else{  
              on=true;
               stoptimer();
         }
       }

3 个答案:

答案 0 :(得分:0)

我为你创造了一个小提琴,它将计时器从60秒倒计时到00.

小提琴https://jsfiddle.net/njw73naj/

<强> HTML

<h1>
 <span id="min">0</span>
 :
 <span id="sec">00</span>
</h1>

<强> JS

var seconds = 60,
    secondDom = document.getElementById("sec");

secondDom.innerHTML = seconds;

var countdown = function(){
    seconds--;
    if(seconds < 0){
      clearInterval(timer);
    }else{
      secondDom.innerHTML = (seconds < 10 ? "0" + seconds : seconds);
    }
}

var timer = setInterval(countdown,1000);

希望这会有所帮助。 :)

答案 1 :(得分:0)

我已从您的代码中删除了某些不必要的内容。虽然, 你应该知道它不是真正的2分钟。我的&#34; setInterval&#34;基于 在你原来的setInterval。

HTML:

<h1  id='session' onclick='general()'>1</h1>

JS:

<script>
var seconds = 60;
var x = document.getElementById('session').innerHTML;

var t;

function timer(){

    if (x === 0 && seconds === 0)
    {
        stoptimer(t);
    }

    else if(seconds === 0){
        seconds = 60;
        x--;
    }

    else{
        seconds--;
    }

document.getElementById('session').innerHTML = x + ':' + seconds;
}

function stoptimer(){
    clearInterval(t);
}

var on = true;

function general(){
    if(on){  
        on=false;
        t = setInterval(timer,200);
    }else{  
        on=true;
        stoptimer();
    }
}
</script>

答案 2 :(得分:0)

问题在于计时器的功能,所以我对你的功能进行了一些修改,并重写了它。我在jsfiddle中运行它并且它正在工作。

function timer(){        
   if(x>=0 && flag==false){
      seconds--; 
      if(seconds<10){
         seconds='0'+seconds;
        };
       if(seconds==0){
           x--;
          seconds=60;
         }
        }
    if (x == -1){
     flag=true;
     x = 0;
     seconds = '00';
    }
    document.getElementById('session').innerHTML=x+':'+seconds;
}

确保您使用全局变量var flag=false;才能正常运行此功能。 这是我创建的jsfiddle的链接:composition

我希望有所帮助。