博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS简单的倒计时(代码优化)
阅读量:5258 次
发布时间:2019-06-14

本文共 2685 字,大约阅读时间需要 8 分钟。

倒计时网上一大堆,所以也没有什么好说的,支持:1.年,月,日,天,时分秒等倒计时。

JS代码如下:

/* * js简单的倒计时 * @param {date,obj} 日期 对象格式 */ function CountDown(date,obj) {    var self = this;    self.date = date;    self.obj = obj;    self._init(); }; $.extend(CountDown.prototype,{        _init: function(){        var self = this,            obj = self.obj;        var dateTime = self._calculateTime();        if(obj.sec) {            $(obj.sec).html(dateTime.sec);        }        if(obj.mini) {            $(obj.mini).html(dateTime.mini);        }        if(obj.hour) {            $(obj.hour).html(dateTime.hour);        }        if(obj.day) {            $(obj.day).html(dateTime.day);        }        if(obj.month) {            $(obj.month).html(dateTime.month);        }        if(obj.year) {            $(obj.year).html(dateTime.year);        }        // setInterval 会有误差 大概每小时有5秒的误差 故用setTimeout做计时器 精准更高         t && clearTimeout(t);        var t = setTimeout(function(){            self._init();        }, 1000);    },    _zero: function(n){        var n = parseInt(n,10);        if(n > 0) {            if(n < 10) {                n = "0" + n;            }            return String(n);        }else {            return n = "00";        }    },    _calculateTime: function(){        var self = this,            date = self.date || Date.UTC(2050, 0, 1);        var end = new Date(date),            now = new Date();        // getTimezoneOffset() 方法可返回格林威治时间和本地时间之间的时差,以分钟为单位。        var leftTime = Math.round((end.getTime() - now.getTime())/1000) + end.getTimezoneOffset() * 60;        var obj = {            sec: "00",            mini: "00",            hour: "00",            day: "00",            month: "00",            year: "0"        };        if(leftTime > 0) {            obj.sec = self._zero(leftTime % 60);            obj.mini = Math.floor(leftTime / 60) > 0 ? self._zero(Math.floor(leftTime / 60) % 60) : "00";            obj.hour = Math.floor(leftTime / 3600) > 0 ? self._zero(Math.floor(leftTime/3600) % 24) : "00";            obj.day = Math.floor(leftTime / (24 * 3600)) > 0 ? self._zero(Math.floor(leftTime / (24*3600)) % 30) : "00";            obj.month = Math.floor(leftTime / (30 * 24 * 3600)) > 0 ? self._zero(Math.floor(leftTime / (30 * 24 * 3600)) % 12) : "00";            //年份,按按回归年360天秒算            obj.year = Math.floor(leftTime / (360 * 30 * 24 * 3600)) > 0 ? Math.floor(leftTime / (360 * 30 * 24 * 3600)) : "0";        }        return obj;    } });

假如HTML如下:

那么我们可以这样初始化代码:

var d = 1419509471000;    //var d = Date.UTC(2030, 6, 27, 16, 34);var obj = {    sec: $(".sec"),    mini: $(".mini"),     hour: $(".hour")}new CountDown(d, obj);

转载于:https://www.cnblogs.com/tugenhua0707/p/3809184.html

你可能感兴趣的文章
求a的n次方
查看>>
尚硅谷资料库
查看>>
ios判断app是否有打开相机的权限
查看>>
Centos7LDAP LDAPadmin的完整部署记录(改良版,其它文档太多坑)
查看>>
B. Trees in a Row(cf)
查看>>
PowerShell导出场中的WSP包到本地
查看>>
nodejs下载图片到本地,根据百度图片查找相应的图片,通过nodejs保存到本地文件夹...
查看>>
使用Jquery解析Json基础知识
查看>>
SQLserver锁和事务隔离级别的比较与使用(转)
查看>>
Problem B: 分数类的类型转换
查看>>
python-zmail发送邮件
查看>>
RabbitMQ-rabbitmqctl和插件使用(四)
查看>>
Scrapy中的反反爬、logging设置、Request参数及POST请求
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定单词首字母大写
查看>>
C程序-进程内存结构分析
查看>>
bzero()函数
查看>>
dom节点相关问题
查看>>
【CF 453A】 A. Little Pony and Expected Maximum(期望、快速幂)
查看>>
LINUX下通过外部SMTP发邮件 (直接抛弃sendmail和postfix)
查看>>
Hdoj 1517.A Multiplication Game 题解
查看>>