2016-02-14 2 views
1

Пожалуйста, помогите мне с моим кодом. Моя проблема в том, когда таймер закончен, он показывает -1: 60, а не показывает 0: 00.I пробовал разные способы выражения else, но напрасно , Когда я изменяю условие в выражении if на x> 0, таймер не опускается с 0:60. Любая помощь будет оценена. Я пробовал другое, если ничего другого, ничего не помогает. Спасибо заранее.Простой таймер Javascript не работает правильно

<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(); 
     } 
     } 
+0

Трудно понять, в чем проблема, попробуйте написать больше о том, что вы пытаетесь сделать. – RunningFromShia

+0

Ну, моя проблема в том, когда таймер закончен, он показывает -1: 60 вместо того, чтобы показывать 0: 00.I пробовал различать способы else инструкции, но напрасно. Когда я изменяю условие в выражении if на x> 0, таймер не опускается с 0:60. – Armine

ответ

0

Проблема в том, все из-за Funtion таймера, так что я сделал несколько изменений в функции, и переписать его. Я запустил его в 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, которую я создал: https://jsfiddle.net/35w4nkzm/1/

Я надеюсь, что это помогло.

0

я создал скрипку для вас, это отсчет таймера с 60 секунд до 00.

Fiddle: 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); 

Надеется, что это помогает. :)

+0

Большое спасибо, это действительно помогло. :) – Armine

0

Я удалил из вашего кода некоторые ненужные вещи. хотя, вы должны знать, что это действительно не 2 минуты. мой «setInterval» основан на на вашем исходном 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> 
+0

Спасибо большое, за ваше большое усилие. Очень ценю. – Armine

Смежные вопросы