2012-10-04 7 views
3

У меня есть этот код яваскриптаJavascript Обратный отсчет не работает

function updateClock() { 
     time = time + 1; 
     var mins = 1; 
     var secs = 50 
     var mins = parseInt(mins/ 60); 
     var secs = time - mins * 60; 

     mins = mins.toString(); 
     secs = secs.toString(); 

     if (mins.length < 2) 
      mins = "0" + mins; 
     if (secs.length < 2) 
      secs = "0" + secs; 


     var timeDisp = document.getElementById("timerDisp"); 
     timeDisp.innerText = mins + ":" + secs; 
    } 

Он рассчитывает, сколько времени прошло, но что, если я хочу сделать обратный отсчет? (или сделать наоборот) вместо того, чтобы отслеживать время, я хочу дать, если определенное время, то время со временем уменьшается, скажем, 1 минута и 15 секунд, как я могу выполнить это по данному коду?

+2

Это не работает, потому что это секундомер, а не таймер. Вы пытались изменить код? – Blender

+0

Я сделал, но он все еще делает то же самое. Я попытался установить определенное время, но он продолжает заканчиваться на тот же результат. – KyelJmD

+1

Опубликуйте свой текущий код. С этим должно быть проще работать. – Blender

ответ

5

Вы можете выполнить свой updateClock() каждые 1 секунду с помощью setTimeout(), чтобы создать обратный отсчет.

var time; 
function UpdateClock() { 
    time = time - 1; 

    if (time > 0) { 
     setTimeout(UpdateClock, 1000); // 1000 miliseconds 
    } 

    var mins = parseInt(time/60, 10); 
    var secs = time - mins * 60; 

    mins = mins.toString(); 
    secs = secs.toString(); 

    if (mins.length < 2) 
     mins = "0" + mins; 
    if (secs.length < 2) 
     secs = "0" + secs; 

    timeDisp.innerText = mins + ":" + secs + " left"; 
} 

function StartCountdown(countdowntime) { 
    time = countdowntime; 
    updateClock(); 
} 
+0

Возможно, вы захотите переместить вызов 'setTimeout' как можно раньше в' UpdateClock'. В противном случае дополнительная обработка для других строк может означать, что общее время между «тиками» на самом деле немного длиннее 1000 мс. Не такая проблема в этом примере, но если вы не будете осторожны, вы можете закончить таймер, который дрейфует с «реального» времени. –

+0

Как насчет секунд, как бы я его отобразил? Я разделяю секунды и минуты – KyelJmD

+0

@KyelJmD То же самое, что вы делали это в своей реализации. –

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