JS簡單的倒計時(代碼最佳化)

來源:互聯網
上載者:User

標籤:style   class   blog   code   http   tar   

倒計時網上一大堆,所以也沒有什麼好說的,支援: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如下:

<span class="hour"></span>時 <span class="mini"></span>分 <span class="sec"></span>秒

那麼我們可以這樣初始化代碼:

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

JSfiddler倒計時示範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.