Мне нужен таймер обратного отсчета, который работает одновременно - PullRequest
0 голосов
/ 07 сентября 2018
  1. Привет, ребята? пожалуйста, мне нужна помощь, я хочу ситуацию, когда после определенное время первый таймер должен перестать считать, а второй таймер выполняет и обновляет «BREAK TIME» таким образом, что если страница при обновлении первый таймер не будет работать, пока не завершится выполнение второго таймера, и наоборот.

    <script>
    
    
     let element = document.querySelector('#countdown');
        let breakTime = document.querySelector("#countdownbreak"),myD=true;
        function TimeFii(){
          time_difference = (60*1) -(((Date.now()-localStorage.getItem('realTime'))/1000) | 0); //60 if duration = 60*1
          hours = (time_difference/3600) | 0;
          minutes = ((time_difference % 36000) / 60)  | 0;
          seconds = (time_difference %60)|0;
          hours = hours<10 ? "0"+hours:hours
          minutes =  minutes < 10 ? "0"+minutes:minutes//00
          seconds = seconds <10 ?"0"+seconds:seconds
            uniseconds = seconds;
            element.textContent = minutes+":"+seconds;
            if(time_difference<=0){
              var start = Date.now()+100;`enter code here`
              localStorage.setItem('realTime',start);
            }
            if(seconds==39){
              stop();
              resetFii();
              element.innerHTML =""
              localStorage.setItem('noStart',myD)
              startFiiTimer(TimeFiiBreak);
            }
        }
    
        function TimeFiiBreak(){
          time_difference = (60*3) -(((Date.now()-localStorage.getItem('realBTime'))/1000) | 0); //60 if duration = 60*1
          hours = (time_difference/3600) | 0;
          minutes = ((time_difference % 36000) / 60)  | 0;
          seconds = (time_difference %60)|0;
          hours = hours<10 ? "0"+hours:hours
          minutes =  minutes < 10 ? "0"+minutes:minutes//00
          seconds = seconds <10 ?"0"+seconds:seconds
            uniseconds = seconds;
            breakTime.textContent = "BREAK TIME:"+minutes+":"+seconds;
            if(time_difference<=0){
              var start = Date.now()+100;
              localStorage.setItem('realBTime',start);
            }
            if(seconds==40){
              stopB();
              resetBFii();
              startFiiTimer(TimeFii);
    
            }
        }
    
        function startFiiTimer(fun){
          return setInterval(fun,100);
        }
    
    
        function resetFii(){
            return localStorage.removeItem('realTime');
        }
        function stop(){
          return clearInterval(TimeFii)
        }
    
        function resetBFii(){
            return localStorage.removeItem('realBTime');
        }
        function stopB(){
          return clearInterval(TimeFii)
        }
        window.onload = function (){
          if(myD !=false){
            startFiiTimer(TimeFii);
          }
        }
    
    </script>
    

    Пожалуйста, приведенный выше фрагмент работает, но не так точно, как я хочу, вы можете посетить fastplay24.com, чтобы увидеть пример таймера. спасибо

1 Ответ

0 голосов
/ 07 сентября 2018

setInterval () возвращает идентификатор таймера, который необходимо использовать при вызове clearInterval (), а не самой функции. Что-то вроде:

idtimerfii = setInterval(fun,100);

clearInterval(idtimerfii)
...