freislot
@freislot
Frontend-разработчик

Как реализовать увеличение числа на 1 раз в секунду (таймер)?

Ребят простая задача оказалась достаточно сложной для меня))) попробовал вот так

i = 0
do {
   setTimeout(function() {
   	   i += 1;
   	   $(".count1").text(i);
   }, 1000);
} while (i <= 100)


у меня вешается браузер :)
в общем нужно раз в секунду делать i++ и отображать это в нужном div'е))
  • Вопрос задан
  • 899 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Чтобы не путаться в замыканиях, областях видимости переменных и бесконечных циклах, проще всего сделать так:
setInterval(() => $(".count1").text(parseInt($(".count1").text(), 10) + 1), 1000);

Но этот способ предполагает, что в .count1 изначально будет какое-то число.

Если чуть усложнить код, то это ограничение снимается:
setInterval(() => $(".count1").text((parseInt($(".count1").text(), 10) || 0) + 1), 1000);

или
let counter = 1;
setInterval(() => $(".count1").text(counter++), 1000);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Если вы хотите более точного увеличение числа на 1 в секунду, то нужно привязываться к классу Date.
Функция setTimeout очень не точна и набегает большая погрешность.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект