AtriSimone
@AtriSimone
Осваиваю Front-end

Как исправить секундомер на javascript?

Доброй ночи.
Учу JS и после одного из видеоуроков для закрепления материала была следующая задача: "Разработайте программу секундомер. Секундомер должен иметь три кнопки «Старт», «Стоп», «Сбросить». Секундомер должен выводить время в формате 00:00:00."

Я сделал примерно похожее решение, за исключением пары косяков:
- секундомер показывает не в нужном формате(по одной цифре для кажного значения времени);
- если второй раз(или более) нажать на кнопку старт, то счетчик начинает адово себя вести.

Видел по интернетам решения с использованием инпута для отображения значений и использование объекта Date. Но логика там довольно сложная мне показалась и не понятная в итоге. Хочу сам домучать до робочего состояния скрипт.
Подскажите пожалуйста где я ошибаюсь и где об этом можно почитать, посмотреть что бы понять как довести до ума свое детище. Весь код доступен выше по ссылке.
Спасибо за ваше время.
  • Вопрос задан
  • 1203 просмотра
Решения вопроса 1
edli007
@edli007
full stack, team lead
это не корректное решение, по той причине что
setInterval(count, 1000);
срабатывает не через 1000 микросекунд, а не раньше 1000 микросекунд. То есть из-за блокирующей операции, реальный тик может быть 1200 или 1500 микросекунд, а итоге секундомер начнет врать.

Тут корректно запоминать дату старта и сравнивать с текущим временем, используя объект Date.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
- секундомер показывает не в нужном формате(по одной цифре для кажного значения времени);

if < 10 then 0+""+seconds;

>- если второй раз(или более) нажать на кнопку старт, то счетчик начинает адово себя вести.

сбрасывать надо при старте прошлый интервал
Ответ написан
Комментировать
@AlexListen
админ, стаж 14 лет
Господа, ТС просил нулики добавить, а не углубляться в демагогию)))

во общем, примерно так, додумай сам куда влепить)))

th=hours<10?0+""+hours:hours;
tm=minutes<10?0+""+minutes:minutes;
ts=seconds<10?0+""+seconds:seconds;
timeTable.innerHTML = th+":"+tm+":"+ts;
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы