<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
body
{
width:300px;
}
#timer
{
text-align: center;
font-size: 50px;
}
.controls{
display: flex;
justify-content: space-between;
}
.btn{
padding:10px;
background-color: pink;
cursor: pointer;
}
</style>
</head>
<body>
<div id="timer">00</div>
<div class="controls">
<div id="start" class="btn">Start</div>
<div id="reset" class="btn">Reset</div>
</div>
<script>
let start = document.getElementById("start");
let timer = document.getElementById("timer");
let mode = "stop";
let startTime;
let nowTime;
let addTime = 100;//累積
let diff;
let countTimer;
start.addEventListener("click" , function()
{
switch(mode)
{
case "stop":
startTime = new Date().getTime();
getDiff();
mode = "run";
console.log("run" , addTime);
break;
case "run":
clearTimeout(countTimer);
mode = "stop";
console.log("stop" , addTime);
break;
}
});
let getDiff = function()
{
nowTime = new Date().getTime();
diff = (nowTime - startTime) ;
timer.textContent = diff / 1000//秒数をセット;
countTimer = setTimeout(getDiff , 50);
}
</script>
</body>
</html>
PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+Cgk8bWV0YSBjaGFyc2V0PSJVVEYtOCI+Cgk8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgoJPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgoJPHRpdGxlPkRvY3VtZW50PC90aXRsZT4KCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cglib2R5Cgl7CgkJd2lkdGg6MzAwcHg7Cgl9CgkjdGltZXIKCXsKCQl0ZXh0LWFsaWduOiBjZW50ZXI7CgkJZm9udC1zaXplOiA1MHB4OwoJfQoJLmNvbnRyb2xzewoJCWRpc3BsYXk6IGZsZXg7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoJfQoJLmJ0bnsKCQlwYWRkaW5nOjEwcHg7CgkJYmFja2dyb3VuZC1jb2xvcjogcGluazsKCQljdXJzb3I6IHBvaW50ZXI7Cgl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJCgk8ZGl2IGlkPSJ0aW1lciI+MDA8L2Rpdj4KCTxkaXYgY2xhc3M9ImNvbnRyb2xzIj4KCSAgPGRpdiBpZD0ic3RhcnQiIGNsYXNzPSJidG4iPlN0YXJ0PC9kaXY+CgkgIDxkaXYgaWQ9InJlc2V0IiBjbGFzcz0iYnRuIj5SZXNldDwvZGl2PgoJPC9kaXY+CgoJPHNjcmlwdD4KCQlsZXQgc3RhcnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKTsKCQlsZXQgdGltZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGltZXIiKTsKCQlsZXQgbW9kZSA9ICJzdG9wIjsKCQlsZXQgc3RhcnRUaW1lOwoJCWxldCBub3dUaW1lOwoJCWxldCBhZGRUaW1lID0gMTAwOy8v57Sv56mNCgkJbGV0IGRpZmY7CgkJbGV0IGNvdW50VGltZXI7CgoKCQlzdGFydC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIgLCBmdW5jdGlvbigpCgkJewoJCQlzd2l0Y2gobW9kZSkKCQkJewoJCQkJY2FzZSAic3RvcCI6CgkJCQkJc3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CgkJCQkJZ2V0RGlmZigpOwoKCQkJCQltb2RlID0gInJ1biI7CgkJCQkJY29uc29sZS5sb2coInJ1biIgLCBhZGRUaW1lKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgInJ1biI6CgkJCQkJY2xlYXJUaW1lb3V0KGNvdW50VGltZXIpOwkKCgkJCQkJbW9kZSA9ICJzdG9wIjsKCQkJCQljb25zb2xlLmxvZygic3RvcCIgLCBhZGRUaW1lKTsKCQkJCQlicmVhazsKCQkJfQoJCX0pOwoKCQlsZXQgZ2V0RGlmZiA9IGZ1bmN0aW9uKCkKCQl7CgkJCW5vd1RpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQkJZGlmZiA9ICAobm93VGltZSAtIHN0YXJ0VGltZSkgOwoJCQl0aW1lci50ZXh0Q29udGVudCA9IGRpZmYgLyAxMDAwLy/np5LmlbDjgpLjgrvjg4Pjg4g7CgkJCWNvdW50VGltZXIgPSBzZXRUaW1lb3V0KGdldERpZmYgLCA1MCk7CgkJfQoKCTwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=