2016-05-10 2 views
0

Я пытаюсь создать счетчик javascript, который начинается через 25 минут и заканчивается на 0. Идея состоит в том, чтобы показать минуты/секунды как часы обратного отсчета на странице (мой целевой div называется 'txt'). Но я не получаю желаемого результата - таймер не вычитает каждый раз, когда функция запускается (каждый мс). Любые идеи о том, где я ошибаюсь? Код ниже:Рекурсивный таймер обратного отсчета

function countdown() { 

    var target = 1500000; // 25 mins 
    var current = 1000; // 0 secs 

    for (var i=0; i<5; i++) { 
     var diff = target-current;   // calculates the 25 minutes 
     var min = Math.floor(diff/1000/60); //gets mins 
     var sec = (diff/1000) % 60;   // gets secs 
     current = current+1000; 

     document.getElementById("txt").innerHTML = min + ":" + sec; 
     var t = setTimeout(countdown, 2500);} 
    } 

} 
+2

Возможный дубликат (http://stackoverflow.com/questions/20618355/the -simplest-possible-javascript-countdown-timer) – dippas

+0

Как только ваша проблема исправлена, вы должны вызывать только * setTimeout *, если 'diff> = 0', в противном случае он будет работать без необходимости. – RobG

+0

@ RobG - спасибо. Да добавит, что он остановится, когда diff достигнет 0. – vaspv

ответ

0

здесь вы идете:

var target = 1500000; // 25 mins 
var current = 0; // 0 secs 
function countdown() { 
    current += 1000; 
    var diff = target-current;   // calculates the 25 minutes 
    var min = Math.floor(diff/1000/60); //gets mins 
    var sec = (diff/1000) % 60;   // gets secs 

    document.getElementById("txt").innerHTML = min + ":" + sec; 
    if (diff > 0) 
     setTimeout(countdown, 1000); 

} 

countdown(); 

JSFiddle с управлением, например: [? Простейший возможный таймер обратного отсчета JavaScript] https://jsfiddle.net/epcmw0uc/5/

+1

большое спасибо! Он работает сейчас. – vaspv

+0

приветствую :) –

1

Необходимо определить ток вне вашей функции. В настоящее время вы сбрасываете его до 1000 каждый раз, когда функция запускается.

+0

спасибо за разъяснение. Я подозревал, что (сброс до 1000), но (ошибочно) думал, что функция Timeout позаботится об этом. – vaspv

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

  • Нет связанных вопросов^_^