Я хочу использовать простой таймер обратного отсчета, начиная с 30 секунд с момента запуска функции и заканчивая на 0. Нет миллисекунд. Как это можно закодировать?
147
Я хочу использовать простой таймер обратного отсчета, начиная с 30 секунд с момента запуска функции и заканчивая на 0. Нет миллисекунд. Как это можно закодировать?
var count=30;
var counter=setInterval(timer, 1000); //1000 will run it every 1 second
function timer()
{
count=count-1;
if (count <= 0)
{
clearInterval(counter);
//counter ended, do something here
return;
}
//Do code for showing the number of seconds here
}
Чтобы код таймера появился в абзаце (или где-либо еще на странице), просто поместите строку:
<span id="timer"></span>
где вы хотите, чтобы появились секунды. Затем вставьте следующую строку в вашу timer()
функцию, чтобы она выглядела следующим образом:
function timer()
{
count=count-1;
if (count <= 0)
{
clearInterval(counter);
return;
}
document.getElementById("timer").innerHTML=count + " secs"; // watch for spelling
}
Я написал этот сценарий некоторое время назад:
Использование:
источник
myCounter.stop();
Пока что ответы, похоже, основаны на том, что код запускается мгновенно. Если вы установите таймер на 1000 мс, вместо этого он будет около 1008.
Вот как вы должны это сделать:
Чтобы использовать, позвоните:
источник
Вот еще один, если кому-то нужен на минуты и секунды:
источник
setTimeout(Decrement, 1000)
предпочтительно. stackoverflow.com/questions/6232574/…источник
Math.floor
, а неMath.round
Только что изменил ответ @ ClickUpvote :
Вы можете использовать IIFE (выражение для немедленного вызова функции) и рекурсию, чтобы сделать его немного проще:
Показать фрагмент кода
источник
В зависимости от принятого ответа, ваша машина перейдет в спящий режим и т. Д., Что может привести к задержке работы таймера. Вы можете получить точное время за небольшую обработку. Это даст истинное время, оставшееся.
источник
Вы можете сделать следующее с чистым JS. Вам просто нужно указать функцию с количеством секунд, а все остальное она сделает.
источник
На основе решения, представленного @Layton Everson, я разработал счетчик, включающий часы, минуты и секунды:
источник
источник
Мое решение работает с форматами даты и времени MySQL и предоставляет функцию обратного вызова. на завершении. Отказ от ответственности: работает только с минутами и секундами, так как это то, что мне было нужно.
источник
Ради производительности теперь мы можем безопасно использовать requestAnimationFrame для быстрого зацикливания вместо setInterval / setTimeout.
При использовании setInterval / setTimeout, если задача цикла занимает больше времени, чем интервал, браузер просто расширит цикл интервала, чтобы продолжить полный рендеринг. Это создает проблемы. После нескольких минут перегрузки setInterval / setTimeout это может привести к зависанию вкладки, браузера или всего компьютера.
Интернет-устройства имеют широкий диапазон характеристик, поэтому жестко закодировать фиксированный интервал времени в миллисекундах совершенно невозможно!
Используя объект Date , сравнить начальную эпоху даты и текущую. Это намного быстрее, чем все остальное, браузер позаботится обо всем, с постоянной скоростью 60 кадров в секунду ( 1000/60 = 16,66 мс по кадру ) - четверть моргания глаз - и если задача в цикле требует больше, чем это , браузер сбросит некоторые перерисовки.
Это позволяет получить запас на глазах у нас на глаза ( Человек = 24FPS => 1000/24 = 41,66 мс по кадрам = плавная анимация!)
https://caniuse.com/#search=requestAnimationFrame
источник