今天制作一个商城项目距离抢购还剩多长时间的一个小功能
首先要知道这个倒计时是不断的变化的,所以需要用到定时器来自动变化(setInterval),有三个标签存放时分秒,再利用innerHTML将计算出来的时间放入三个标签内,第一次执行也是间隔毫秒数,因此刷新页面会有空白,我们最好采取封装函数的方式,这样可以先调用一次这个函数,防止刚开始刷新页面有空白问题。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <div> <span class="shi">1</span> <span class="fen">2</span> <span class="miao">3</span> </div> <script> var shi = document.getElementsByClassName('shi')[0]; var fen = document.getElementsByClassName('fen')[0]; var miao = document.getElementsByClassName('miao')[0]; var inputTime = new Date('2022-8-5 23:59:00'); // 返回的是用户输入时间总的毫秒数 // 先调用一次这个函数,防止第一次刷新页面有空白 countDown(); // 开启定时器 setInterval(countDown, 1000); function countDown() { var nowTime = new Date(); // 返回的是当前时间总的毫秒数 // 输入时间减去当前时间再除以1000,得到剩余秒数 // times就等于剩余秒数 var times = (inputTime - nowTime) / 1000; // (times / 60 /60 % 24)这是计算时间的公式 var h = parseInt(times / 60 / 60 % 24); //时 // h < 10就在前面加个0 因为我们这个功能的效果是时分秒都是两位数的, // 小于10就是1~9 大于10就是10~24 h = h < 10 ? '0' + h : h; // 将计算出的时间添加到标签中 shi.innerHTML = h; var m = parseInt(times / 60 % 60); //分 m = m < 10 ? '0' + m : m; fen.innerHTML = m; var s = parseInt(times % 60); //分 s = s < 10 ? '0' + s : s; miao.innerHTML = s; } </script> </body> </html>