JS实现倒计时功能

一、前言

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

二、分析

①提示时间是每秒不断变化的,需要用到定时器(setInterval)

  1.  
    //1000表示每隔一秒变化一次,单位为毫秒
  2.  
    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>

四、总结

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

posted @ 2023-06-30 13:33  growflowers  阅读(199)  评论(0编辑  收藏  举报