簡體   English   中英

JavaScript倒數計時器

[英]JavaScript count down timer

當該部分沒有任何內容時,我想使此JavaScript倒數計時器顯示01而不是1和00。 我基本上只是想使它看起來像一個數字時鍾,但是當沒有0使其擠入時,它看起來很奇怪。

這是我找到的腳本:

// JavaScript Document

CountDownTimer('03/25/2013 9:0 AM', 'countdownSpring');
CountDownTimer('06/10/2013 9:0 AM', 'countdownSummer');
CountDownTimer('11/27/2013 9:0 AM', 'countdownFall');
CountDownTimer('12/23/2013 9:0 AM', 'countdownWinter');

function CountDownTimer(dt, id)
{
    var end = new Date(dt);

    var _second = 1000;
    var _minute = _second * 60;
    var _hour = _minute * 60;
    var _day = _hour * 24;
    var timer;

    function showRemaining() {
        var now = new Date();
        var distance = end - now;
        if (distance < 0) {

            clearInterval(timer);
            document.getElementById(id).innerHTML = 'CAMP IS HERE!';

            return;
        }
        var days = Math.floor(distance / _day);
        var hours = Math.floor((distance % _day) / _hour);
        var minutes = Math.floor((distance % _hour) / _minute);
        var seconds = Math.floor((distance % _minute) / _second);

        document.getElementById(id).innerHTML = days + ':';
        document.getElementById(id).innerHTML += hours + ':';
        document.getElementById(id).innerHTML += minutes + ':';
        document.getElementById(id).innerHTML += seconds;
    }

    timer = setInterval(showRemaining, 1000);
}

您可以使用一個簡單的函數,例如:

function pad(n) {
  return (n<10? '0':'') + n;
}

然后:

document.getElementById(id).innerHTML = pad(days) + ':' + pad(hours) + ':' +
                                        pad(minutes) + ':' + pad(seconds);

要么

document.getElementById(id).innerHTML = [pad(days),pad(hours),pad(minutes), pad(seconds)].join(':');

好吧,您始終可以在將值添加到頁面之前進行測試,並進行相應的更改,即:

var daysString;
if (days == 0) { daysString = "00"; }
else if (days < 10) { daysString = "0" + days; }
else { daysString = "" + days; } 
document.getElementById(id).innerHTML = daysString + ':';

一種方法是創建一個數字擴展名,如下所示:

Number.prototype.useLeadingZero = function () {
    return (this < 10 ? "0" : "") + this;
};

然后,您可以像這樣使用它:

document.getElementById(id).innerHTML = days.useLeadingZero() + ':' +
                                        hours.useLeadingZero() + ':' +
                                        minutes.useLeadingZero() + ':' +
                                        seconds.useLeadingZero();

工作演示

對您的Javascript源進行了一些更改(我已經使用jquery進行了修改)

            var cdTimer;
        function CountDownTimer(dt, elementID)
        {
            var end = new Date(dt);

            var _second = 1000;
            var _minute = _second * 60;
            var _hour = _minute * 60;
            var _day = _hour * 24;

            cdTimer = setInterval(function() { showRemaining(end, _second, _minute, _hour, _day, elementID) }, 1000);
        }   
        function showRemaining(end, _second, _minute, _hour, _day, elementID) 
        {
            var $updateElement = $('#' + elementID);
            var now = new Date();
            var distance = end - now;
            if (distance < 0) 
            {

                clearInterval(cdTimer);
                $updateElement.html('CAMP IS HERE!');

                return;
            }
            var days = Math.floor(distance / _day);
            var hours = Math.floor((distance % _day) / _hour);
            var minutes = Math.floor((distance % _hour) / _minute);
            var seconds = Math.floor((distance % _minute) / _second);

            $updateElement.html( days + ' ' + Right('00' + hours, 2) + ':' + Right('00' + minutes, 2) + ':' + Right('00' + seconds, 2) );
        }
        function Right(str, n)
        {
            if (n <= 0)
            {
                return "";
            }
            else if (n > String(str).length)
            {
                return str;
            }
            else 
            {
                var iLen = String(str).length;
                return String(str).substring(iLen, iLen - n);
            }
        }           
        $(document).ready(function() {
            CountDownTimer('03/25/2013 9:0 AM', 'countdownSpring');
            CountDownTimer('06/10/2013 9:0 AM', 'countdownSummer');
            CountDownTimer('11/27/2013 9:0 AM', 'countdownFall');
            CountDownTimer('12/23/2013 9:0 AM', 'countdownWinter');
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM