一、前言
网站在做活动时,会出现一个截止时间倒计时的提示。效果如图:
二、分析
①提示时间是每秒不断变化的,需要用到定时器(setInterval)
//1000表示每隔一秒变化一次,单位为毫秒
setInterval(countDown, 1000);
②三个盒子通过innerHTML进行赋值,放入时、分、秒
③计算当前时间到截至时间的时间(时间戳:指的不是当前时间,而是距离1970年1月1号过了多少毫秒)
new Date()
④截止时间的时间戳减当前时间的时间戳
⑤通过毫秒数计算出小时,分钟,秒(结果转化成整数)赋值给盒子
三、代码
html部分
<div> <span class="hour">1</span> <strong>:</strong> <span class="minute">2</span> <strong>:</strong> <span class="second">3</span> </div>
css部分
<style> span { /* 转化span模式,使span能设置宽高 */ display: inline-block; width: 40px; height: 40px; background-color: #333; color: #fff; font-weight: 900; /* 使方块中文字居中 */ text-align: center; line-height: 40px; } </style>
js部分
<script> //获取元素 var hour = document.querySelector(".hour"); var minute = document.querySelector(".minute"); var second = document.querySelector(".second"); //获取截止时间的时间戳(单位毫秒) var inputTime = +new Date("2021-12-27 09:00:00"); //我们先调用countDown函数,可以避免在打开界面后停一秒后才开始倒计时 countDown(); //定时器 每隔一秒变化一次 setInterval(countDown, 1000); function countDown() { //获取当前时间的时间戳(单位毫秒) var nowTime = +new Date(); //把剩余时间毫秒数转化为秒 var times = (inputTime - nowTime) / 1000; //计算小时数 转化为整数 var h = parseInt(times / 60 / 60 % 24); //如果小时数小于 10,要变成 0 + 数字的形式 赋值给盒子 hour.innerHTML = h < 10 ? "0" + h : h; //计算分钟数 转化为整数 var m = parseInt(times / 60 % 60); //如果分钟数小于 10,要变成 0 + 数字的形式 赋值给盒子 minute.innerHTML = m < 10 ? "0" + m : m; //计算描述 转化为整数 var s = parseInt(times % 60); //如果秒钟数小于 10,要变成 0 + 数字的形式 赋值给盒子 second.innerHTML = s < 10 ? "0" + s : s; } </script>
四、总结
最终效果是打开页面后就开始倒计时所以要先调用计算时间的函数,获取当前时间的时间戳代码一定要写在函数里面。
相关博文
JS实现倒计时功能