javascriptでストップウォッチを作成しているものです。
getSeconds()関数にミリセカンドを渡して、秒に直したいのですが、返り値がNaNになります。
発生のタイミングは3回めのクリック時ですが、何が原因が特定する方法はないでしょうか?
<button id="start"> start </button> <button id="reset"> reset </button> <br> <span id="display">00:00:00:00</span> <script> let startButton = document.getElementById("start"); let resetButton = document.getElementById("reset"); let display = document.getElementById("display"); let mode = "stop"; let interval_1; let startTime; let accumTime = 0; let diff; startButton.addEventListener("click" , function() { switch(mode) { case "stop": mode = "run"; resetButton.setAttribute("disabled" , true); //ここで開始時刻を取得 startTime = performance.now(); interval_1 = setInterval(update ,60); break; case "run": mode = "stop"; resetButton.removeAttribute("disabled"); clearInterval(interval_1); let textContent_of_timer = display.textContent;//タイマーを止めた時点でのdisplay.textContentを保存しておく accumTime = textContent_of_timer; break; } }); resetButton.addEventListener("click" , function() { accumTime = 0; display.textContent = accumTime; }); function update() { display.textContent = ms_converter ( accumTime +(performance.now() - startTime) ); } //msをストップウォッチの形式に変換 function ms_converter(ms) { const date = new Date(ms); return `${date.getSeconds()}:${date.getMilliseconds()}` ; } </script>
getSeconds()にどのような値を渡すとNaNとなるのか。それが分かれば原因に検討がつくかもしれません。
num2とnum3は返り値ナシでしたが、NaNとはなりません。numの返り値は40です。
let num = new Date(100000);//dateオブジェクト? let num2 = "100000";//文字列 let num3 = 100000;//数字 console.log("1:" + num.getSeconds()); console.log("2:" + num2.getSeconds()); console.log("3:" + num3.getSeconds());
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/10 06:47
2021/08/10 06:50
2021/08/10 12:04
2021/08/10 12:17
2021/08/10 13:50