前提・実現したいこと
単純なストップウォッチアプリを作成したのですが、一応は動くものの、秒数が切り替わるタイミングで数字がブレてしまいます。おそらく一瞬だけ表示されている数字が消えているのではないかと思います。(00:00:09:xxxから00:00:10:xxxに変わるときに左の00:00:0の部分が一瞬消えてしまっている)これを修正して、秒が変わるタイミングで時や分の数字が消えないようにしたいです。
該当のソースコード
JavaScript
1var timer = document.getElementById('timer'); 2var start = document.getElementById('start'); 3var stop = document.getElementById('stop'); 4var clear = document.getElementById('clear'); 5 6var startTime = 0; 7var elapsedTime = 0; 8var memoriedTime = 0; 9 10function updateTimeText() { 11 var h = Math.floor(elapsedTime / 60000 / 60) 12 var m = Math.floor(elapsedTime / 60000); 13 var s = Math.floor(elapsedTime % 60000 / 1000) 14 var ms = elapsedTime % 1000; 15 16 h = ('0' + h).slice(-2); 17 m = ('0' + m).slice(-2); 18 s = ('0' + s).slice(-2); 19 ms = ('0' + ms).slice(-3); 20 21 timer.innerText = h + ':' + m + ':' + s + ':' + ms; 22} 23 24function countUp() { 25 timerID = setInterval(() => { 26 elapsedTime = Date.now() - startTime + memoriedTime; 27 updateTimeText(); 28 }, 10); 29} 30 31start.addEventListener('click', () => { 32 startTime = Date.now(); 33 countUp(); 34 updateTimeText(); 35}); 36 37stop.addEventListener('click', () => { 38 clearInterval(timerID); 39 memoriedTime = elapsedTime; 40}) 41 42clear.addEventListener('click', function () { 43 elapsedTime = 0; 44 memoriedTime = 0; 45 timer.innerText = "00:00:00:000" 46})
なぜそのような挙動をするのか考えてみたのですが思い至りませんでした。何かヒントがあればご教授頂けると幸いです。よろしくお願いします。
HTMLも質問文に追記してください。
回答1件
あなたの回答
tips
プレビュー