サンプル
html
0.00
JavaScript
(function(){//即時関数で囲うとほかのプログラムに影響を与えない
"use strict";//最近は厳密なエラーチェックをするのが推奨されている
var startTime;//タイムを押した時の時刻を保持しておくため
var timerId;//タイマーを回していくので
var elapsedTime = 0;//タイマー経過をこの変数で保持
var timetext = document.getElementById("js-timetext");
var btnStart = document.getElementById("js-btn--start");
var btnStop = document.getElementById("js-btn--stop");
var btnReset = document.getElementById("js-btn--reset");
//startボタンを2回クリックすると2回起動してしまってstopを2回押さないといけない状態を解決する
function setBtnState (start, stop, reset){//ボタンの状態をture or falseで渡す
btnStart.disabled = !start;//false startの否定
btnStop.disabled = !stop;
btnReset.disabled = !reset;
}
//起動直後はstartボタンだけtrueにしたい
setBtnState (true, false, false);
btnStart.addEventListener("click", function(){
startTime = Date.now();//1970年 1月1日 00:00:00 からの経過ミリ秒を取得
updateTimerText();//再帰的に実行したいのでファンクションを用意
setBtnState (false, true, false);//startをクリックしたらstopだけtrueにする
});
btnStop.addEventListener("click", function(){
elapsedTime += Date.now() - startTime;//現在の時間から最初の時間を引いたものを足しあげる
clearTimeout(timerId);//止める
setBtnState (true, false, true);//stopをクリックしたらstop以外をtrueに
});
btnReset.addEventListener("click" , function(){
timetext.innerHTML = "0.00";//0.00に書き換える
elapsedTime = 0;//0に書き換える
setBtnState (true, false, false);//resetを押したら最初と同じ状態に
});
function updateTimerText(){//updateTimerTextという関数を用意
timerId = setTimeout(function(){
var t = Date.now() - startTime + elapsedTime;
timetext.innerHTML = (t / 1000).toFixed(2);//ミリ秒を普通の秒になおすために1000で割る。toFixedは2ケタまで表示
updateTimerText();//繰り返し実行したいので
}, 10);//10ミリ秒間隔で実行
}
})();
bottonタグを使わず装飾するとこんな感じになります
参照 : ドットインストール