jquery 将按钮转换为切换

laik7k3q  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(101)
var hours =0;
var mins =0;
var seconds =0;

document.getElementById('start').addEventListener('click', function(){
      startTimer();
});

document.getElementById('stop').addEventListener('click', function(){
      clearTimeout(timex);
});

           
function startTimer(){
  timex = setTimeout(function(){
    
      seconds++;
    if(seconds >59){
        seconds=0;
        mins++;
    if(mins>59) {
            mins=0;hours++;
        if(hours < 10) {
            $("#hours").text('0'+hours+':')
        } else 
            $("#hours").text(hours+':');
                }
                       
            if(mins < 10){                     
                $("#mins").text('0'+mins+':');
            }       
            else $("#mins").text(mins+':');
                   }
    
                if(seconds <10) {
                    $("#seconds").text('0'+seconds);
                } else {
                      $("#seconds").text(seconds);
                    }
    
    
   
      startTimer();

  },1000);
}

个字符
我正在尝试将“播放”和“暂停”按钮替换为仅一个。所以当我点击按钮时,它会变成“暂停”,当它暂停时,它会变成“播放”,就像切换一样,但我无法让它工作,只有播放按钮继续工作,当我试图暂停计时器时,按钮图标不会改变。

HTML:

<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.13.0/css/all.css">   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

          <span id="hours">00:</span>
          <span id="mins">00:</span>
          <span id="seconds">00</span>  
       

     
        
<button id="start"><i class="fas fa-play" style="color:#000"></i></button>

        
 <button id="stop"><i class="fas fa-pause" style="color:#000;"></i></button>

脚本:

var hours =0;
var mins =0;
var seconds =0;

document.getElementById('start').addEventListener('click', function(){
      startTimer();
});

document.getElementById('stop').addEventListener('click', function(){
      clearTimeout(timex);
});

           
function startTimer(){
  timex = setTimeout(function(){
    
      seconds++;
    if(seconds >59){
        seconds=0;
        mins++;
    if(mins>59) {
            mins=0;hours++;
        if(hours < 10) {
            $("#hours").text('0'+hours+':')
        } else 
            $("#hours").text(hours+':');
                }
                       
            if(mins < 10){                     
                $("#mins").text('0'+mins+':');
            }       
            else $("#mins").text(mins+':');
                   }
    
                if(seconds <10) {
                    $("#seconds").text('0'+seconds);
                } else {
                      $("#seconds").text(seconds);
                    }
    
      startTimer();

  },1000);
}


将“播放”和“暂停”按钮合二为一。

js81xvg6

js81xvg61#

这是相对简单的。您只需要一个boolean(通常也称为标志),它指示计时器当前的状态:跑不跑。然后根据这一点,你必须像以前一样启动或停止计时器。
要更改图标,可以在每个ElementclassList属性上使用replace()方法。
你会注意到我已经把你的变量声明从var改成了let,你应该在默认情况下这样做,因为var总是一个全局变量,一旦你的程序变大了,它会导致各种各样的问题。查看this article在不同方法上声明变量。

let hours = 0;
let mins = 0;
let seconds = 0;
let timer = 0;
let isRunning = false;


const startStop = document.getElementById('startStop');
startStop.addEventListener('click', function(element) {
  if(isRunning) {
    clearTimeout(timer);
    isRunning = false;
    console.log()
    startStop.querySelector("i").classList.replace("fa-pause", "fa-play");
  }
  else {
    startTimer();
    isRunning = true;
    startStop.querySelector("i").classList.replace("fa-play", "fa-pause");
  }
});


function startTimer() {
   timer = setTimeout(function() {

    seconds++;
    if (seconds > 59) {
      seconds = 0;
      mins++;
      if (mins > 59) {
        mins = 0;
        hours++;
        if (hours < 10) {
          $("#hours").text('0' + hours + ':')
        } else
          $("#hours").text(hours + ':');
      }

      if (mins < 10) {
        $("#mins").text('0' + mins + ':');
      } else $("#mins").text(mins + ':');
    }

    if (seconds < 10) {
      $("#seconds").text('0' + seconds);
    } else {
      $("#seconds").text(seconds);
    }
    startTimer();

  }, 1000);
}

个字符

相关问题