<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #box{width: 100px;height: 100px;border: solid 1px black;margin: 40px auto;text-align: center;line-height: 100px;font-size: 30px;} #btn{display: block;margin: 0 auto;font-size: 20px;width: 100px;} </style> </head> <body> <div id="box">5</div> <input type="button" id="btn" value="开始" name=""> <script> var obox = document.getElementById("box"); var obtn = document.getElementById("btn"); var s = obox.innerHTML; // 要减的值 var s2 = obox.innerHTML; // 最终要使用的初始值 // 点击的状态:0开始;1暂停;2复位 var type = 0; // 计时器的返回值变量 var t; // 终点值,目标值,停止值 var target = 1; obtn.onclick = function(){ if(type === 0){ // 如果状态为0,执行开始的功能 t = setInterval(function(){ // 判断计算的值是否为终点值 if(s <= target){ obox.innerHTML = "结束了"; clearInterval(t); // 如果到终点了,将状态改成下次的状态 obtn.value = "复位"; type = 2; }else{ // 没到终点,正常减少,设置回去 s--; obox.innerHTML = s; } },1000) // 开始功能结束,改变状态为下次状态 type = 1; obtn.value = "暂停"; }else if(type === 1){ // 如果状态为1,执行暂停功能 clearInterval( t ); // 暂停功能结束,改变状态为下次状态 type = 0; obtn.value = "继续"; }else{ // 如果状态为2,执行复位功能 // 复位页面显示的值 obox.innerHTML = s2; // 复位计算的值 s = s2; // 复位按钮的文字 obtn.value = "开始"; // 复位状态 type = 0; } } </script> </body> </html>
原文:https://www.cnblogs.com/dy0302/p/13321724.html