JavaScript倒计时的具体实现
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 <style> 9 * { 10 margin: 0; 11 padding: 0; 12 } 13 14 body { 15 background-color: #999; 16 } 17 18 .box01 { 19 position: relative; 20 width: 500px; 21 height: 300px; 22 background-color: white; 23 border-top: 1px solid white; 24 margin: 100px auto; 25 } 26 27 .box01 div { 28 float: left; 29 margin-top: 100px; 30 margin-left: 50px; 31 width: 100px; 32 height: 100px; 33 background-color: black; 34 color: white; 35 36 /* div标签中的数据水平垂直居中 */ 37 line-height: 100px; 38 text-align: center; 39 } 40 41 button{ 42 position: absolute; 43 width: 150px; 44 height: 50px; 45 top: 30px; 46 } 47 .b1{ 48 left: 80px; 49 } 50 .b2{ 51 left: 260px; 52 } 53 </style> 54 </head> 55 56 <body> 57 <!-- 倒计时是不断变换的 因此需要定时器来自动变换 setInterval --> 58 <!-- 三个黑色的盒子分别存放着 时 分 秒 --> 59 <!-- 三个黑色盒子利用 innerHTML 放入计算好的 时分秒 --> 60 61 <div class="box01"> 62 <button class="b1">开启定时器</button> 63 <button class="b2">关闭定时器</button> 64 <div class="shi">0</div> 65 <div class="fen">0</div> 66 <div class="miao">0</div> 67 </div> 68 69 <script> 70 var hour = document.querySelector('.shi'); 71 var minute = document.querySelector('.fen'); 72 var second = document.querySelector('.miao'); 73 var btn01 = document.querySelector('.b1'); 74 var btn02 = document.querySelector('.b2') 75 76 77 var times01 = null; //将其声明成全局变量,是为了好在后面关掉这个定时器 78 btn01.addEventListener('click', function () { 79 var inputTime = prompt('请输入具体的事件,格式如 2020-4-19 06:00:00') 80 81 var inputtime = +new Date(inputTime); //用户输入的时间的总的毫秒数 82 83 countDown(); //先调用一次函数 防止页面刷新有空白 84 85 //定时器 ,每隔1s 运行一次 countDown函数 86 times01 = setInterval(countDown, 1000); 87 88 function countDown(time) { 89 var nowtime = +new Date(); //返回的时当前时间的总的毫秒数 90 91 //这个times是个字符串,因为 inputtime 是通过输入框获取的。 92 var times = (inputtime - nowtime) / 1000; //剩余时间总的秒数 93 // 如果还要加上天数 94 // var d = parseInt(times/60/60/24); 95 //不过剩下的小时数就要改成 96 //var h = parseInt(times / 60 / 60 % 24 ); 97 98 var h = parseInt(times / 60 / 60 ); 99 //三元表达式,主要是将 1这种小于10的数字转换成 01 ,为了好看 100 h = h < 10 ? '0' + h : h; 101 hour.innerHTML = h; 102 103 var m = parseInt(times / 60 % 60); 104 m = m < 10 ? '0' + m : m; 105 minute.innerHTML = m; 106 107 var s = parseInt(times % 60); 108 s = s < 10 ? '0' + s : s; 109 second.innerHTML = s; 110 111 } 112 113 114 }) 115 116 117 btn02.addEventListener('click', function () { 118 clearInterval(times01); 119 }) 120 </script> 121 </body> 122 123 </html>