У меня есть цикл, который я рассчитываю для предполагаемого времени завершения для пользователя.
В принципе, я хотел бы, чтобы формат был 00:00:00 (hours, minutes,seconds)
.
Я застрял на секундах, я смог рассчитать, сколько минут и секунд есть, однако, фактически, подсчет я не так хорош в...
ДЕМО: http://jsfiddle.net/ZjWkb/
Я знаю, что моя проблема заключается в том, что секунды отображаются как 60, однако, не считая вниз из-за оператора if, он просто устанавливает настройку до 60, пока не опустится ниже 60.
Что я могу сделать, чтобы исправить это?
Я НЕ ожидаю, что кто-нибудь напишет все это для меня, я просто застрял - это все :)
Обновлена скрипка, чтобы включить часы. Проверь сейчас. Я отредактировал твою скрипку. Кажется, работает. Ссылка: http://jsfiddle.net/ZjWkb/7/
Вопрос был ниже:
var minute = (secondsRemaining) / 60;
secondsRemaining = secondsRemaining % 60;
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);