var timerSpan = document.getElementById("timerSpan"); var startTime = null; var doneTimeMilliseconds = null; update(); document.addEventListener("keydown", function(e) { switch (e.keyCode) { case 32: // spacebear if (startTime == null) { startTime = new Date(); doneTimeMilliseconds = null; } else { doneTimeMilliseconds = new Date() - startTime; startTime = null; } break; case 84: // t is for test startTime = null; doneTimeMilliseconds = 10000000; break; case 82: // r is for reset startTime = null; doneTimeMilliseconds = null; break; } }); function update() { var milliseconds = 0; if (startTime != null) milliseconds = new Date() - startTime; if (doneTimeMilliseconds != null) milliseconds = doneTimeMilliseconds; timerSpan.textContent = formatTime(milliseconds); requestAnimationFrame(update); } function formatTime(milliseconds) { var centiseconds = Math.floor(milliseconds / 10); var seconds = Math.floor(centiseconds / 100); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var result = ""; if (hours !== 0) { result += hours.toString() + ":"; result += zfill(minutes % 60, 2) + ":"; result += zfill(seconds % 60, 2) + "."; } else { if (minutes !== 0) { result += minutes.toString() + ":"; result += zfill(seconds % 60, 2) + "."; } else { result += seconds.toString() + "."; } } result += zfill(centiseconds % 100, 2); return result; } function zfill(number, digits) { var result = number.toString(); while (result.length < digits) { result = "0" + result; } return result; }