如何将时间减少百分之几分秒

How do you decrement time for minutes seconds hundredths?

本文关键字:几分 百分之 时间      更新时间:2023-09-26

假设您想将计时器设置为所需的任何时间,该时间将以00:00:00分、秒和百分之一的形式显示。你会怎么做?请提供任何帮助,我们将不胜感激。

以下是JSFiddle中的链接:

https://jsfiddle.net/mxpuejvz/2/

  function decrement(){
           var time = 600;
           var mins = parseInt((time / 100) / 60);
           var secs = parseInt((time / 100) % 60);
           var hundredths = parseInt(time % 100);
           if(mins < 10) {
              mins = "0" + mins;
           }
           if(secs < 10) {
              secs = "0" + secs;
           }
           if(hundredths < 10) {
              hundredths = "0" + hundredths;
           }
           document.getElementById("output").innerHTML = mins + ":" + secs + ":" + hundredths;
           if (hundredths === 0){
              if(time ===0){
                 clearInterval(countdownTimer);
                 document.getElementById("output").innerHTML = "Time's Up.";
              }else{
                 time--;
              }
              var countdownTimer = setInterval('decrement()', 10)
      }
    }
  }

似乎有三个问题需要注意。

  1. "时间"需要存储在屏幕更新功能之外,并在每次屏幕更新时递减或计算
  2. 使用CCD_ 1将数字转换为整数被一些人认为是一种黑客行为。CCD_ 2或整数计算可以是替代方案
  3. 定时器回拨不能保证准确准时:计算10毫秒的回拨次数不会得出所用时间的1/100

下面的代码是一个示例,说明了它如何工作,减去任何暂停按钮操作

var countdownTimer;
var endTime;
var counter = 0;  // ** see reply item 3. **
function startCountDown( csecs)   // hundredths of a second
{   endTime = Date.now() + 10*csecs; // endTime in millisecs
    decrement();
    countdownTimer = setInterval(decrement, 10);
    counter = 0; // testing
}
function decrement()
{   var now, time, mins, secs, csecs, timeStr;
    ++ counter; // testing
    now = Date.now();
    if( now >= endTime)
    {   time = 0;
        timeStr = "Times up! counter = " + counter;
        clearInterval( countdownTimer);
    }
    else
    {   time = Math.floor( (endTime - now)/10); // unit = 1/100 sec
        csecs = time%100;
        time = (time-csecs)/100; // unit = 1 sec
        secs = time % 60;
        mins = (time-secs)/60;   // unit = 60 secs
        timeStr =  
          ( (mins < 10)  ? "0" + mins : mins) + ":" +
          ( (secs < 10)  ? "0" + secs : secs) + ":" +
          ( (csecs < 10) ? "0" + csecs : csecs);
    }
    document.getElementById("output").innerHTML=timeStr;
}


startCountDown的自变量给出了倒计时的1/100秒数。如果计数器结果与参数相同,请尝试交换浏览器选项卡,然后在倒计时期间再次交换。

要测试的HTML:

<button type="button" onclick="startCountDown(600)">start</button>
<div id="output">
</div>