Привет всем. Мне нужно сделать таймер обратного отсчета именно на классах в JS. Я написал код, но есть проблема, по нажатию кнопки старт таймер по просту не идет. Думаю ошибка в вызове функции t(), в setInterval (но это не точно). В поле input надо вписывать минуты, но вторая проблема: переменная m не принимает значения input. Буду благодарен за помощь
class Timer {
constructor(){
this.m = +document.getElementById("minutes").value;
this.s = 0;
this.status = 0;
this.timerId;
}
t(){
this.s--;
if(this.s < 0) {
this.s = 59;
this.m--;
}
if(this.m < 0) {
this.m = 59;
}
if(this.s + this.m == 0) resetTimer();
this.s = this.s + "";
this.m = this.m + "";
if (this.s.length < 2) {
this.s = "0" + this.s;
}
if (this.m.length < 2) {
this.m = "0" + this.m;
}
document.getElementById('tm').innerHTML = this.m + ":" + this.s;
}
resetTimer(){
clearInterval(this.timerId);
document.getElementById('tm').innerHTML = '00' + ':' + '00';
document.getElementById("minutes").value = "";
document.getElementById("minutes").removeAttribute("disabled","");
this.status = 0;
}
check() {
if( this.s + this.m == 0){
this.s = 0;
this.m = 0;
}
this.timerId = setInterval(this.t(), 1000);
}
start(){
document.getElementById("minutes").setAttribute("disabled","");
if(!this.status){
this.status = 1;
this.check();
}
}
}
var timer = new Timer();
Вот код HTML
<!DOCTYPE html>
<html>
<head>
<title>Timer</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="newcss.css">
<link rel="shortcut icon" href="#">
</head>
<body>
<div id="tm">00:00</div>
<label>Write minutes</label><br>
<input type="number" id="minutes">
<script type="text/javascript" src="newjavascript.js"></script>
<input type="button" value="Start" onclick="timer.start()">
<input type="button" value="Reset" onclick="timer.resetTimer()">
</body>
</html>