31.03.2020, 21:18
|
Интересующийся
|
|
Регистрация: 19.03.2018
Сообщений: 13
|
|
Как добавить миллисекунды в таймер обратного отсчета.
Помогите пожалуйста! Нагуглила, вот такой таймер обратного отсчета, подскажите пожалуйста, как в него добавить миллисекунды.
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var hours = Math.floor((t / (1000 * 60 * 60)) % 0);
var seconds = Math.floor((t / 1000) % 5);
var minutes = Math.floor((t / 1000 / 60) % 0);
var hours = Math.floor((t / (1000 * 60 * 60)) % 0);
return {
'total': t,
'hours': hours,
'minutes': minutes,
'seconds': seconds,
};
}
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var miliSeconds = Math.floor((t / 1000) % 60);
var seconds = Math.floor((t / 1000) % 60);
var minutes = Math.floor((t / 1000 / 60) % 60);
var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
return {
'total': t,
'hours': hours,
'minutes': minutes,
'seconds': seconds,
};
}
function initializeClock(id, endtime) {
var clock = document.getElementById(id);
var hoursSpan = clock.querySelector(".hours");
var minutesSpan = clock.querySelector(".minutes");
var secondsSpan = clock.querySelector(".seconds");
function updateClock() {
var t = getTimeRemaining(endtime);
if (t.total <= 0) {
document.getElementById("header").className = "hidden";
clearInterval(timeinterval);
return true;
}
hoursSpan.innerHTML = ("0" + t.hours).slice(-2);
minutesSpan.innerHTML = ("0" + t.minutes).slice(-2);
secondsSpan.innerHTML = ("0" + t.seconds).slice(-2);
}
updateClock();
var timeinterval = setInterval(updateClock, 1000);
}
var deadline = new Date(Date.parse(new Date()) + 60 * 30 * 1000);
initializeClock('countdown', deadline);
<div id="countdown" class="countdown">
<div class="countdown-number">
<span class="hours countdown-time"></span>
<span class="countdown-text">Hours</span>
</div>
<div class="countdown-number">
<span class="minutes countdown-time"></span>
<span class="countdown-text">Minutes</span>
</div>
<div class="countdown-number">
<span class="seconds countdown-time"></span>
<span class="countdown-text">Seconds</span>
</div>
<div class="countdown-number">
<span class="miliSeconds countdown-time"></span>
<span class="countdown-text">Miliseconds</span>
</div>
</div>
Последний раз редактировалось KatyJ, 31.03.2020 в 23:33.
|
|
31.03.2020, 22:41
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.now();
var total = t;
var miliSeconds = t % 1000;
t = t / 1000 | 0;
var seconds = t % 60;
t = t / 60 | 0;
var minutes = t % 60;
t = t / 60 | 0;
var hours = t ;
return {
'total': total,
'hours': hours,
'minutes': minutes,
'seconds': seconds,
'miliSeconds' : miliSeconds
};
}
|
|
31.03.2020, 23:04
|
Интересующийся
|
|
Регистрация: 19.03.2018
Сообщений: 13
|
|
Спасибо! Только сейчас у меня миллисекунды изменяются вперед и назад на одну еденицу. Подскажите пожалуйста, что делаю не так.
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var hours = Math.floor((t / (1000 * 60 * 60)) % 0);
var seconds = Math.floor((t / 1000) % 5);
var minutes = Math.floor((t / 1000 / 60) % 0);
var hours = Math.floor((t / (1000 * 60 * 60)) % 0);
return {
'total': t,
'hours': hours,
'minutes': minutes,
'seconds': seconds,
};
}
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var miliSeconds = Math.floor((t / 1000) % 60);
var seconds = Math.floor((t / 1000) % 60);
var minutes = Math.floor((t / 1000 / 60) % 60);
var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
return {
'total': t,
'hours': hours,
'minutes': minutes,
'seconds': seconds,
};
}
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.now();
var total = t;
var miliSeconds = t % 1000;
t = t / 1000 | 0;
var seconds = t % 60;
t = t / 60 | 0;
var minutes = t % 60;
t = t / 60 | 0;
var hours = t ;
return {
'total': total,
'hours': hours,
'minutes': minutes,
'seconds': seconds,
'miliSeconds' : miliSeconds
};
}
function initializeClock(id, endtime) {
var clock = document.getElementById(id);
var hoursSpan = clock.querySelector(".hours");
var minutesSpan = clock.querySelector(".minutes");
var secondsSpan = clock.querySelector(".seconds");
var miliSecondsSpan = clock.querySelector(".miliSeconds");
function updateClock() {
var t = getTimeRemaining(endtime);
if (t.total <= 0) {
document.getElementById("header").className = "hidden";
clearInterval(timeinterval);
return true;
}
hoursSpan.innerHTML = ("0" + t.hours).slice(-2);
minutesSpan.innerHTML = ("0" + t.minutes).slice(-2);
secondsSpan.innerHTML = ("0" + t.seconds).slice(-2);
miliSecondsSpan.innerHTML = ("0" + t.miliSeconds).slice(-2);
}
updateClock();
var timeinterval = setInterval(updateClock, 1000);
}
var deadline = new Date(Date.parse(new Date()) + 60 * 30 * 1000);
initializeClock('countdown', deadline);
Последний раз редактировалось KatyJ, 31.03.2020 в 23:26.
|
|
31.03.2020, 23:13
|
Интересующийся
|
|
Регистрация: 19.03.2018
Сообщений: 13
|
|
Подскажите пожалуйста, куда еще нужно добавить изменения.
Последний раз редактировалось KatyJ, 31.03.2020 в 23:20.
|
|
31.03.2020, 23:25
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
KatyJ,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
31.03.2020, 23:28
|
Интересующийся
|
|
Регистрация: 19.03.2018
Сообщений: 13
|
|
Спасибо. Отформатировала. Буду очень благодарна, если Вы поможете мне в решении моей проблемы.
Последний раз редактировалось KatyJ, 31.03.2020 в 23:34.
|
|
31.03.2020, 23:38
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
miliSecondsSpan.innerHTML = ("00" + t.miliSeconds).slice(-3);
И уберите первые две функции getTimeRemaining
Так
var timeinterval = setInterval(updateClock, 1000);
вы вызываете функцию (не чаще) каждую секунду. Если вас интересуют, как будут меняться миллисекунды, напишите хоть так
var timeinterval = setInterval(updateClock, 0);
Тогда минимальное время будет 4 мс
Последний раз редактировалось voraa, 31.03.2020 в 23:43.
|
|
31.03.2020, 23:47
|
Интересующийся
|
|
Регистрация: 19.03.2018
Сообщений: 13
|
|
Спасибо огромное!!!! Всё работает! Очень помогли!!!
|
|
31.03.2020, 23:57
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
А еще лучше так
function initializeClock(id, endtime) {
var clock = document.getElementById(id);
var hoursSpan = clock.querySelector(".hours");
var minutesSpan = clock.querySelector(".minutes");
var secondsSpan = clock.querySelector(".seconds");
var miliSecondsSpan = clock.querySelector(".miliSeconds");
function updateClock() {
var t = getTimeRemaining(endtime);
if (t.total <= 0) {
document.getElementById("header").className = "hidden";
return true;
}
hoursSpan.innerHTML = ("0" + t.hours).slice(-2);
minutesSpan.innerHTML = ("0" + t.minutes).slice(-2);
secondsSpan.innerHTML = ("0" + t.seconds).slice(-2);
miliSecondsSpan.innerHTML = ("00" + t.miliSeconds).slice(-3);
requestAnimationFrame(updateClock);
}
requestAnimationFrame(updateClock);
}
requestAnimationFrame - вызывает функцию перед обновлением экрана, когда браузер это сможет сделать. Чаще ее вызывать смысла не имеет. На современных компьютерах это 60 раз в секунду.
|
|
|
|