Показать сообщение отдельно
  #1 (permalink)  
Старый 11.04.2018, 12:46
Интересующийся
Отправить личное сообщение для goofy1337 Посмотреть профиль Найти все сообщения от goofy1337
 
Регистрация: 11.04.2018
Сообщений: 10

Таймер обратного отсчета
Привет всем. Мне нужно сделать таймер обратного отсчета именно на классах в 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>
Ответить с цитированием