javascript — таймер обратного отсчета для тестового движка в переполнении стека

Здравствуйте, я пытаюсь добавить таймер обратного отсчета в моем тестовом движке. Но я не могу показать это. Если я добавляю скрипт на страницу php, то он работает, но перезагружается и запускается снова. но если я держу файл сценария Java отдельно, чтобы избежать перезагрузки, чем невозможно отобразить таймер. Я добавляю код, пожалуйста, предложите мне подходящие. HTML и JS находятся в отдельном файле.

<script>
//define your time in second
var c=120;
var t;
timedCount();

function timedCount() {
var hours = parseInt( c / 3600 ) % 24;
var minutes = parseInt( c / 60 ) % 60;
var seconds = c % 60;

var result = (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds  < 10 ? "0" + seconds : seconds);

document.getElementById("timer").innerHTML=result;

if(c == 0 ) {
//setConfirmUnload(false);
//$("#quiz_form").submit();
window.location="result.php?td=$tid";
}
c = c - 1;
t = setTimeout(function() {
timedCount()
},
1000);
}
</script>

//html
<div class='col-md-12 sub_top'>
<h4 style="color:#FF0000" align="center">
Time Remaining : <span id='timer'></span>
</h4>
</div>

0

Решение

Элемент (document.getElementById («timer»)), который вы пытались найти, не был в DOM при запуске сценария.

Решение 1

Чтобы исправить это, вы можете выполнить код на window.onload событие

   window.onload = function(){
timedCount();
}

Решение 2

выполнить код на DOMContentLoaded (документ готов)

document.addEventListener('DOMContentLoaded', function(){
timedCount();
}, false);

Решение 3

Переместите ваш скрипт непосредственно перед закрывающим тегом body.

0

Другие решения

Других решений пока нет …