Traté de codificar un temporizador de JavaScript que incrementaría un valor cada segundo y actualizaría el HTML interno de un elemento DOM para mostrar la hora. El primer tick funciona, pero después de eso timerEngine.time no está definido y al incrementarlo en tick() se produce NaN. ¿Por qué la variable no está definida?
Aquí está el código:
const timerEngine = { time: 0, timerID: -1, tick() { this.time++; if (this.time % 60 < 10) document.getElementById("timer").innerHTML = `${Math.floor(this.time / 60)}:0${this.time % 60}`; else document.getElementById("timer").innerHTML = `${Math.floor(this.time / 60)}:${this.time % 60}`; }, start() { if (this.timerID === -1) this.timerID = setInterval(this.tick, 1000); }, stop() { if (this.timerID !== -1) { clearInterval(this.timerID); this.timerID = -1; } }, reset() { this.stop(); this.time = -1; this.tick(); } }El temporizador se inicia en una función:
someFunction() { // some code timerEngine.reset(); timerEngine.start(); }