5

JS实现倒计时功能

 2 years ago
source link: https://blog.p2hp.com/archives/9292
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

网站在做活动时,会出现一个截止时间倒计时的提示。效果如图:

76e3e87f4ee84792a3d47b03d469c988.png

①提示时间是每秒不断变化的,需要用到定时器(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>
<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>
<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>
<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>
<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>

最终效果是打开页面后就开始倒计时所以要先调用计算时间的函数,获取当前时间的时间戳代码一定要写在函数里面。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK