Таймер обратного отсчета: не может установить свойство 'textContent', равное нулю - PullRequest
0 голосов
/ 03 сентября 2018

Я получил несколько ошибок с небольшим скриптом обратного отсчета. Не могу найти решение здесь. Сообщение об ошибке выдает 1 ошибку каждую секунду:

Uncaught TypeError: Cannot set property 'textContent' of null
at (index):181
(anonymous) @ (index):181
setInterval (async)
(anonymous) @ (index):179

Это скрипт для таймера:

<script type="text/javascript">

var timeleft = 45;
var downloadTimer = setInterval(function(){

timeleft--;
document.getElementById("countdowntimer").textContent = timeleft;
document.getElementById("countdowntimer").style.color = "white";

if(timeleft <= 0)
    clearInterval(downloadTimer);
},1000);

</script>

1 Ответ

0 голосов
/ 03 сентября 2018

Ваш html (согласно вашему комментарию) недействителен (</span class="timer">). Кроме того, код может быть упрощен.

countDownForNOfTicks(5);

function countDownForNOfTicks(nOfTicks) {
  document.querySelector("#countdowntimer").textContent = nOfTicks--;
  // [do more things if necessary]
  if (nOfTicks >= 0) {
    return setTimeout(() => countDownForNOfTicks(nOfTicks), 1000);
  }
  return refresh();
}

function refresh() {
  document.querySelector("div.timer").textContent += " DONE";
}
<div class="timer">Refreshing in 
 <span id="countdowntimer">45</span> seconds
</div>
...