簡體   English   中英

當計時器中的數字小於10時,該數字開頭的0會重復

[英]When a number less than 10 is in the chronometer, the 0 at the start of the number is repeated

我正在做一個計時器,我希望當計時器中出現的數字小於10而不是1、2、3 ...時,會出現在計時器01、02、03中。

 function startchrono() { var start = document.getElementById('start'), reset = document.getElementById('reset'), counter = document.getElementById('counter'), sCounter = 0, mCounter = 0, hCounter = 0; setInterval(function () { sCounter++; if (sCounter == 60) { mCounter++; sCounter = 0; } if (sCounter < 10) { sCounter = "0" + sCounter; } if (mCounter < 10) { mCounter = "0" + mCounter; } if (hCounter < 10) { hCounter = "0" + hCounter; } counter.value = hCounter + " " + mCounter + " " + sCounter; }, 1000); } 
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Everything - everything you'll want is here.</title> </head> <body> <script src="js/chronometer.js" charset="utf-8"></script> <div class="w3-row w3-container"> <div class="w3-col m3 w3-text-red"> <p> </p> </div> <div class="w3-col m6 w3-center w3-text-white w3-xxlarge"> <p> <i>Everything you'll want is here.</i> </p> </div> <div class="w3-col m3 w3-text-red"> <p> </p> </div> </div> <div class="w3-container w3-row"> <div class="w3-col m3 w3-text-red"> <p> </p> </div> <div class="w3-col m6 w3-center w3-xlarge w3-white w3-text-grey"> <p> Chronometer </p> </div> <div class="w3-col m3 w3-text-red"> <p> </p> </div> </div> <div class="w3-container w3-row"> <div class="w3-col m3 w3-text-red"> <p> </p> </div> <div class="w3-col m6 w3-center w3-white w3-text-grey"> <input id="counter" type="text" name="name" value="00:00:00" readonly="readonly" class="w3-text-grey w3-center"> <br> <p> </p> <input id="start" type="button" name="name" value="Start!" class="w3-btn w3-green" onclick="startchrono()"> <input id="reset" type="button" name="name" value="Reset!" class="w3-btn w3-blue" onclick="reset();"> <p> </p> </div> <div class="w3-col m3 w3-text-red"> <p> </p> </div> </div> </body> </html> 

您將在每次迭代中串聯當前計數,並因此將其轉換為字符串。 快速解決方案是在每次迭代的開始將變量“轉換”為數字,如下所示:

mCounter = +mCounter;
hCounter = +hCounter;
sCounter = +sCounter;

參見https://jsbin.com/tulipotafa/1/edit?html,js,輸出或:

 function startchrono() { var start = document.getElementById('start'), reset = document.getElementById('reset'), counter = document.getElementById('counter'), sCounter = 0, mCounter = 0, hCounter = 0; setInterval(function () { mCounter = +mCounter; hCounter = +hCounter; sCounter = +sCounter; sCounter++; if (sCounter == 60) { mCounter++; sCounter = 0; } if (sCounter < 10) { sCounter = "0" + sCounter; } if (mCounter < 10) { mCounter = "0" + mCounter; } if (hCounter < 10) { hCounter = "0" + hCounter; } counter.value = hCounter + " " + mCounter + " " + sCounter; }, 1000); } 
 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Everything - everything you'll want is here.</title> </head> <body> <script src="js/chronometer.js" charset="utf-8"></script> <div class="w3-row w3-container"> <div class="w3-col m3 w3-text-red"> <p> </p> </div> <div class="w3-col m6 w3-center w3-text-white w3-xxlarge"> <p> <i>Everything you'll want is here.</i> </p> </div> <div class="w3-col m3 w3-text-red"> <p> </p> </div> </div> <div class="w3-container w3-row"> <div class="w3-col m3 w3-text-red"> <p> </p> </div> <div class="w3-col m6 w3-center w3-xlarge w3-white w3-text-grey"> <p> Chronometer </p> </div> <div class="w3-col m3 w3-text-red"> <p> </p> </div> </div> <div class="w3-container w3-row"> <div class="w3-col m3 w3-text-red"> <p> </p> </div> <div class="w3-col m6 w3-center w3-white w3-text-grey"> <input id="counter" type="text" name="name" value="00:00:00" readonly="readonly" class="w3-text-grey w3-center"> <br> <p> </p> <input id="start" type="button" name="name" value="Start!" class="w3-btn w3-green" onclick="startchrono()"> <input id="reset" type="button" name="name" value="Reset!" class="w3-btn w3-blue" onclick="reset();"> <p> </p> </div> <div class="w3-col m3 w3-text-red"> <p> </p> </div> </div> </body> </html> 

以這種方式使用setInterval將導致時鍾發生明顯漂移。

相反,您可以計算兩個日期之間的差額。 在啟動時鍾時創建一個日期實例,並在每一步中計算時差,然后將其格式化為您想要的內容。 假設nowthen是日期的對象看起來會像下面這樣:

var diff = new Date(now - then);
var timeString = diff.toISOString().substr(11,8)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM