Простой таймер обратного отсчета в цикле?

0

У меня есть цикл, который я рассчитываю для предполагаемого времени завершения для пользователя.

В принципе, я хотел бы, чтобы формат был 00:00:00 (hours, minutes,seconds).

Я застрял на секундах, я смог рассчитать, сколько минут и секунд есть, однако, фактически, подсчет я не так хорош в...

ДЕМО: http://jsfiddle.net/ZjWkb/

Я знаю, что моя проблема заключается в том, что секунды отображаются как 60, однако, не считая вниз из-за оператора if, он просто устанавливает настройку до 60, пока не опустится ниже 60.

Что я могу сделать, чтобы исправить это?

Я НЕ ожидаю, что кто-нибудь напишет все это для меня, я просто застрял - это все :)

Теги:
timer
loops

2 ответа

1
Лучший ответ

Обновлена скрипка, чтобы включить часы. Проверь сейчас. Я отредактировал твою скрипку. Кажется, работает. Ссылка: http://jsfiddle.net/ZjWkb/7/

Вопрос был ниже:

var minute = (secondsRemaining) / 60;
secondsRemaining = secondsRemaining % 60;
  • 0
    Но если я поставлю его на 65, это не сработает ..
  • 0
    отредактировал скрипку. Проверь сейчас.
Показать ещё 6 комментариев
1
var count = 1500;
var callsPerSecond = 1;
var delay = 1000;

//count * delay equals 1500000 miliseconds
//1500000 miliseconds == 25 mins, no hours, yet hours are displaying?


function offsetLoop(i, counter, idsRemaining) {

    while (i < counter) {
        var minute = 0;
        var secondsRemaining = (idsRemaining * delay) / 1000;
        var leftSec = 0;
        var hours = 0;

        var remainder = secondsRemaining % 60;
        minute = parseInt(secondsRemaining / 60);


        if (minute > 60) {
        hours = minute % 60;
            minute = parseInt(minute / 60);
        }

        secondsRemaining = secondsRemaining - 1;
        leftSec = remainder;


        secondsRemaining - i;
        if (typeof minute == 'undefined') {
            minute = 0;
        }
        if (typeof hours == 'undefined') {
            minute = 0;
        }
        hours = addZero(hours);
        minute = addZero(minute);
        leftSec = addZero(leftSec);
        log(hours + ":" + minute + ':' + leftSec);
        i++;
        idsRemaining--;
        if (i % callsPerSecond == 0) {
            setTimeout(function () {
                offsetLoop(i, counter, idsRemaining);
            }, delay);
            break;
        }
    }
};

function addZero(num) {
    if (num < 10) {
        num = ('0' + num).slice(-2)
    }
    return num;
}

function log(text) {
    $('#log').html(text);
}

offsetLoop(0, count, count);
  • 0
    Это работает красиво: / haha :)
  • 0
    Мне действительно интересно, как я могу реализовать часы, не могли бы вы объяснить это, пожалуйста?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню