Timer (setInterval, OOP in js)
html
JavaScript
<div id="timer">00:00:00</div>
<button onClick="toggleTimer(event)">start</button>
<button onClick="timer.reset()">Reset</button>
<script>
class Timer {
constructor() {
this.heurs = 0;
this.minute = 0;
this.seconde = 0;
this.interval = null;
}
start() {
if (!this.interval)
this.interval = setInterval(() => {
if (this.seconde >= 59) {
++this.minute;
this.seconde = 0;
} else ++this.seconde;
if (this.minute >= 59) {
++this.heurs;
this.minute = 0;
}
this.elem.innerText =
(this.heurs < 10? "0" : "") + this.heurs + ":" +
(this.minute < 10? "0" : "") + this.minute + ":" +
(this.seconde < 10? "0" : "") + this.seconde;
}, 1000);
}
stop() {
if (this.interval) clearInterval(this.interval);
this.interval = null;
}
reset() {
this.heurs = 0;
this.minute = 0;
this.seconde = 0;
this.elem.innerText =
(this.heurs < 10? "0" : "") + this.heurs + ":" +
(this.minute < 10? "0" : "") + this.minute + ":" +
(this.seconde < 10? "0" : "") + this.seconde;
}
setDisplay(elem) {
this.elem = elem;
}
}
let timer = new Timer();
timer.setDisplay(document.querySelector("#timer"));
function toggleTimer(e) {
if (!timer.interval) {
e.target.innerText = "stop";
timer.start();
} else {
e.target.innerText = "start";
timer.stop();
}
}
</script>
00:00:00