以前書いた以下の2つは
ストップウォッチを作る実験(分と秒)
ストップウォッチを作る実験(時と分と秒とミリ秒)
別のタブを見ている時間は計測されない
今回は別のタブを見ている間も後ろで計測が進むはず
コード.gs
function doGet() { return HtmlService.createHtmlOutputFromFile("index"); } |
意訳この機能がやること 指定したHTMLファイルを表示する |
index.html
<!DOCTYPE html> <html> <body> <input type="text" id="tb" value="00:00:00:00"> <button id="bt">start</button> <button id="reset">reset</button> <script> var ticking = false; var startTime; var intervalTime; function elem(id) { return document.getElementById(id); } elem('bt').onclick = stopWatch; elem('reset').onclick = resetWatch; function stopWatch() { if (ticking === false){ ticking = true; startTime = new Date(); elem('bt').textContent = 'stop'; intervalTime = setInterval(culcTime, 10); }else{ ticking = false; culcTime(); elem('bt').textContent = "start"; clearInterval(intervalTime); } } function culcTime() { var stopTime = new Date(); var milsec = stopTime - startTime;//差分のミリ秒 var hour = Math.floor(milsec / 1000 / 60 / 60);//差分のミリ秒を/秒にして/分にして/時にして小数点以下切り捨てる var milsecM = milsec - (hour * 60 * 60 * 1000);//差分のミリ秒からhour分のミリ秒を引いた残りのミリ秒 var min = Math.floor(milsecM / 1000 / 60);//それを/秒にして/分にして小数点以下を切り捨てる var milsecS = milsecM - (min * 60 * 1000);//差分のミリ秒からhour分のミリ秒を引いた残りのミリ秒からmin分のミリ秒を引いた残りのミリ秒 var sec = Math.floor(milsecS / 1000);//それを/秒にして小数点以下を切り捨てる var milsecMS = milsecS % 1000;//差分のミリ秒からhour分のミリ秒を引いた残りのミリ秒からmin分のミリ秒を引いた残りのミリ秒を秒にした余りのミリ秒 var milsec = milsecMS.toString().slice(0, 2);//それを二桁にする(3桁で表したければ不要な処理) var time = add0(hour, min, sec, milsec); elem('tb').value = time.join(':'); } function add0(hour, min, sec, milsec) { if (hour < 10) { hour = '0' + hour; } if (min < 10) { min = '0' + min; } if (sec < 10) { sec = '0' + sec; } if (milsec < 10) { milsec = '0' + milsec; } var time = [hour, min, sec, milsec]; return time; } function resetWatch() { ticking = false; elem('bt').textContent = "start"; elem('tb').value = "00:00:00:00"; clearInterval(intervalTime); } </script> </body> </html> |