alexbruni
@alexbruni

JavaScript: Как настроить таймер обратного отсчета?

Имеется такой вот таймер. При нажатии на кнопку, идет отсчет времени в секундах, после чего срабатывает функция.
Почему если изменить время в textarea, таймер не хочет работать? Как это сделать, чтобы пользователь сам мог устанавливать таймер на сайте, и как это можно сделать в input а не в textarea? Пробовал ставить input, но таймер вообще отказывался работать.
Я PHP кодер, в JS не очень разбираюсь. Кто сможет помочь?

<script type="text/javascript">
  function startTimer() {
    var my_timer = document.getElementById("my_timer");
    var time = my_timer.innerHTML;
   
    var s = my_timer.innerHTML;
	
    if (s == 0) {
			Scroll('Tst1',1);
          return;
      
    }
    else s--;
    if (s < 10) s = "0" + s;
    document.getElementById("my_timer").innerHTML = +s;
    setTimeout(startTimer, 1000);
  }
</script>

<textarea type="text" id="my_timer">5</textarea> сек.

<button type="submit" class="sbmt" onClick="startTimer()">Запуск с таймером</button>
  • Вопрос задан
  • 3758 просмотров
Решения вопроса 1
@Haos616
<input type="text" id="my_timer" value="5"> сек.

<button type="submit" class="sbmt" onClick="startTimer()">Запуск с таймером</button>

<script type="text/javascript">
window.startTimer = function() {
     var my_timer = document.getElementById("my_timer");
     var time = my_timer.value;
   
     var s = my_timer.value;
	
    if (s == 0) {
			alert('Tst1',1);
          return;
      
    }
    else s--;
    if (s < 10) s = "0" + s;
    document.getElementById("my_timer").value = +s;
    setTimeout(startTimer, 1000);
}
</script>


Но согласен что не совсем правильно и код далеко не идеален =)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Frz
@Frz
Full-stack web, React/React Native
Вообще идея вывода таймера в поле для ввода мягко говоря плохая.
Таймер лучше отображать в другом блоке.
Ответ написан
Ваш ответ на вопрос

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

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