簡體   English   中英

JavaScript倒數計時器無法設置半小時

[英]Javascript countdown timer can't set half past hour

我正在嘗試使用倒數計時器每天(星期一至星期五)進行計數。 到目前為止,所有功能都可以正常運行,除了只能將其設置為計數一個小時(基於24小時制)而不包括半小時。 因此,例如,如果我想計數到4PM,則將var target = 16;設置var target = 16; 但是如果我想4:30並嘗試將var target = 1630;設置var target = 1630; 它不起作用。 不幸的是,我對JavaScript沒有太多的經驗,但是我相信問題可能在於它使用getHours函數評估目標時間的方式,但不確定從何處獲取它。

if (document.getElementById('countdownTimer')) {
    pad = function(n, len) { // leading 0's
        var s = n.toString();
        return (new Array( (len - s.length + 1) ).join('0')) + s;
    };
    function countDown() {
        var now = new Date();
        if ( (now.getDay() >= 1) && (now.getDay() <= 5) ) { // Monday to Friday only
            var target = 15; // 15:00hrs is the cut-off point
            if (now.getHours() < target) { // don't do anything if we're past the cut-off point
                var hrs = (target - 1) - now.getHours();
                if (hrs < 0) hrs = 0;
                var mins = 59 - now.getMinutes();
                if (mins < 0) mins = 0;
                var secs = 59 - now.getSeconds();
                if (secs < 0) secs = 0;
                var str = pad(hrs, 2) + ':' + pad(mins, 2) + '.<small>' + pad(secs, 2) + '</small>';
                document.getElementById('countdownTimer').innerHTML = str;
            }
        }
    }
    var timerRunning = setInterval('countDown()', 1000);
}

如果您可以考慮使用其他方法,則以下javascript會倒計時(以秒為單位),直到將來的任何日期(並在該日期過去之后遞增)。

// new Date(year, month, day, hours, minutes, seconds, milliseconds)
var target = new Date(2014, 0, 30, 12, 30, 0, 0)

function countdown(id, targetDate){
    var today = new Date()
    targetDate.setDate(today.getDate())
    targetDate.setFullYear(today.getFullYear())
    targetDate.setMonth(today.getMonth())
    var diffMillis = targetDate - today
    if (diffMillis >= 0){
        document.getElementById(id).innerHTML = millisToString(diffMillis)
    }
}

setInterval(function(){countdown('seconds', target)},1000)

它使用javascript日期對象,因此您可以使用任何日期。

更新示例以執行以下操作:

  • 使用小時:分鍾:秒等格式化倒計時
  • 到達日期后停止計時器

更新:更新代碼以覆蓋targetDate到今天的日期。

示例: http //jsfiddle.net/kKx7h/5/

對於4:30PM ,請嘗試var target = 16.5而不是var target = 1630;

現在,您需要在分鍾中添加另一個變量。 我們可以將target作為對象文字,而不必為時間聲明兩個變量:

 var target={hour: 15, minute:30};

if ( (now.getHours() < target.hour) && () now.getMinutes() < target.minute ){ 

暫無
暫無

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

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