Итак, ваш код работает нормально, но ваша проблема с вашим endTime
.В вашем setInterval
вы вызываете updateHTML
без параметра endTime
, что вызывает ошибку, поскольку у него нет ссылки на параметр.
Вы можете либо просто обновить updateCounter
функция, чтобы принять это как параметр и передать его в setInterval
функцию:
function updateCounter (endTime) {
if (timeStop) {
timeInterval=setInterval(() => updateHTML(endTime), 1000)
} else {
clearInterval(timeInterval)
}
}
, а затем вызвать updateCounter
с endTime
в нижней части вашей функции updateHtml
.
Или удалите endTime
в качестве параметра из updateHtml
и сделайте его глобальной переменной:
const input=document.querySelector('input')
let timeInterval;
let timeStop;
let endTime;
input.addEventListener('change', (e)=> {
e.preventDefault()
timeStop=true;
endTime=Date.parse(e.target.value)
updateHTML()
})
function updateHTML () {
let time=calculateTimeDiff(endTime)
if (time.total<=0) {
timeStop=false
}
for (let pro in time) {
let el=document.querySelector(`.${pro}`)
if (el) {
el.innerHTML=time[pro]
}
}
updateCounter()
}
etc...