用js简单实现京东秒杀倒计时功能

首先给大家看看效果图,因为是做的移动端的,所以放大给大家看看局部就行:


关于实现京东秒杀,之前用过其他的方法,今天给大家分享一个原生的方法吧,不会很难.

1、倒计时页面结构:

<div class="secondkill">
            <div class="top">
                <span class="red fl">掌上秒杀</span>
                <span class="num fl">0</span>
                <span class="num fl">5</span>
                <span class="colon fl">:</span>
                <span class="num fl">3</span>
                <span class="num fl">5</span>
                <span class="colon fl">:</span>
                <span class="num fl">3</span>
                <span class="num fl">0</span>
                <span class="more fr">更多</span>
            </div>

2、css样式:这个是用css的编译器sass写的

 .secondkill {
        .top {
            height: 40px;
            border-top: 3px solid $jdred;
            border-bottom: 1px solid #ccc;
            padding-top: 5px;
    
            .red {
                color: $jdred;
            }
    
            .num {
                background-color: #000;
                margin: 0px 3px;
                padding: 3px;
                color: white;
            }
        }
    

3、js部分:

            //倒计时
       
            //1. 指定倒计时的到期时间(2018-5-29 21:08:49)
            //可以直接使用年月日时分秒来创建一个date对象,但是月是从0开始的
            var to = new Date(2018, 4, 29, 20, 20, 10);

            function antitime() {
                var now = new Date();

                //2. 拿到当前时间和过期时间之间的时间差(毫秒)
                var deltaTime = to - now; //到期时间和当前时间相差的毫秒数
                
                //如果超时了,就停止倒计时
                if (deltaTime <= 0) {
                    //停止计时器
                    window.clearInterval(timer);
                    //停止执行下面的代码
                    return;
                }
                
                //已知毫秒数,算出几分几秒几秒
                var m = Math.floor(deltaTime / (60*1000)); 
                //算出有多少秒
                var s = Math.floor(deltaTime / 1000 % 60);
                //算出多少毫秒, 毫秒数只显示10位和百位
                var ms = Math.floor(deltaTime % 1000 / 10); 
                    
                //把时间的数字转成字符串, 如果分秒毫秒不足10, 则前面补0
                var timeStr = "" + (m<10?"0"+m:m) + (s<10?"0"+s:s) + (ms<10?"0"+ms:ms);
                console.log(timeStr);

                //063535

                //each是用来遍历.num元素, 其实你可以理解成循环

                $(".secondkill .num").each(function(index, span) {
                    //console.log(span);
                    $(span).html(timeStr.substring(index, index+1));

                    //$(span), span默认是一个js对象,需要用$(span)变成一个jquery对象
                    //$(span).html();这个方法是用来设置span里面的值的
                    //timeStr.subSring();该方法是用来截取字符串 “abcdefg”
                });
            }

            //每十毫秒执行一次
            var timer = setInterval(antitime, 10);
        });

注意部分:

1、注意这个部分,时间要给定一个时间,比如京东上午十点秒杀结束,那这里时间就要填10点,注意月份是从0开始的,所以5月要写4月。这个时间如果过了这个倒计时就不会再执行了的,大家谨记。

  var to = new Date(2018, 4, 29, 20, 20, 10);
2、这里拿到的是毫秒,在后面计算分秒毫秒的时候大家要注意换算。
   //2. 拿到当前时间和过期时间之间的时间差(毫秒)
                var deltaTime = to - now; //到期时间和当前时间相差的毫秒数

3、要判断,如果不足10就要给前面加一个0。

//把时间的数字转成字符串, 如果分秒毫秒不足10, 则前面补0
                var timeStr = "" + (m<10?"0"+m:m) + (s<10?"0"+s:s) + (ms<10?"0"+ms:ms);
                console.log(timeStr);
  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值