2015-11-15 143 views
2

下面是我的JS,然後是我的HTML。我無法弄清楚爲什麼我的倒數計時器不會自動倒計時。您必須每秒刷新一次以查看剩餘的正確時間量。有任何想法嗎?順便說一句,這是一個聖誕節倒計時網站,我正在努力。JavaScript倒數時鐘不會自動倒計時

var Countdowns = function(end, elements, timer, callback) { 
 
    var _seconds = 1000, 
 
    _minutes = _seconds * 60, 
 
    _hours = _minutes * 60, 
 
    _days = _hours * 24, 
 

 
    end = new Date(end) 
 
    timer, 
 

 
    calculate = function() { 
 
    var now = new Date(), 
 
     remaining = end.getTime() - now.getTime(), 
 
     data; 
 

 

 
    if (isNaN(end)) { 
 
     console.log('Invalid date/time') 
 
     return; 
 
    } 
 

 
    if (remaining <= 0) { // clear timer 
 
     clearInterval(timer); 
 
     // callback 
 
     if (typeof callback === 'function') { 
 
     callback() 
 
     } 
 
    } else { 
 
     if (!timer) { 
 
     timer = setInterval(calculate, _seconds); 
 
     } 
 
     data = { 
 
     'days': Math.floor(remaining/_days), 
 
     'hours': Math.floor((remaining % _days)/_hours), 
 
     'minutes': Math.floor((remaining % _hours)/_minutes), 
 
     'seconds': Math.floor((remaining % _minutes)/_seconds), 
 
     } 
 

 
     if (elements.length) { 
 
     for (x in elements) { 
 
      var x = elements[x]; 
 
      data[x] = ('00' + data[x]).slice(-2); 
 
      document.getElementById(x).innerHTML = data[x]; 
 
     } 
 
     } 
 
    } 
 

 

 

 

 

 

 
    }; 
 
    calculate(); 
 
}
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Countdowns</title> 
 
</head> 
 

 
<body> 
 
    <span id="days">00</span> 
 
    <span id="hours">00</span> 
 
    <span id="minutes">00</span> 
 
    <span id="seconds">00</span> 
 

 
    <script src="Countdowns.js"></script> 
 
    <script> 
 
    var callbackfunction = function() { 
 
     console.log('Done!') 
 
    } 
 
    Countdowns('12/25/2015 00:00:00 AM', ['days', 'hours', 'minutes', 'seconds']); 
 
    callbackfunction); 
 
    </script> 
 
</body> 
 

 
</html>

+0

是什麼'callbackFunction參數);' – Ramanlfc

回答

0

你有幾個小錯誤更換callbackfunction);。試試這個:

var Countdowns = function(end, elements, timer, callback) { 
 
    var _seconds = 1000, 
 
    _minutes = _seconds * 60, 
 
    _hours = _minutes * 60, 
 
    _days = _hours * 24, 
 

 
    end = new Date(end) 
 
    timer, 
 

 
    calculate = function() { 
 
    var now = new Date(), 
 
     remaining = end.getTime() - now.getTime(), 
 
     data; 
 

 

 
    if (isNaN(end)) { 
 
     console.log('Invalid date/time') 
 
     return; 
 
    } 
 

 
    if (remaining <= 0) { // clear timer 
 
     clearInterval(timer); 
 
     // callback 
 
     if (typeof callback === 'function') { 
 
     callback() 
 
     } 
 
    } else { 
 
     if (!timer) { 
 
     timer = setInterval(calculate, _seconds); 
 
     } 
 
     data = { 
 
     'days': Math.floor(remaining/_days), 
 
     'hours': Math.floor((remaining % _days)/_hours), 
 
     'minutes': Math.floor((remaining % _hours)/_minutes), 
 
     'seconds': Math.floor((remaining % _minutes)/_seconds), 
 
     } 
 

 
     if (elements.length) { 
 
     for (x in elements) { 
 
      var x = elements[x]; 
 
      data[x] = ('00' + data[x]).slice(-2); 
 
      document.getElementById(x).innerHTML = data[x]; 
 
     } 
 
     } 
 
    } 
 
    }; 
 
    calculate(); 
 
}; 
 

 
var callbackfunction = function() { 
 
    console.log('Done!') 
 
} 
 
Countdowns('12/25/2015 00:00:00 AM', ['days', 'hours', 'minutes', 'seconds']); 
 
callbackfunction();
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Countdowns</title> 
 
</head> 
 

 
<body> 
 
    <span id="days">00</span> 
 
    <span id="hours">00</span> 
 
    <span id="minutes">00</span> 
 
    <span id="seconds">00</span> 
 
    <script src="Countdowns.js"></script> 
 
</body> 
 

 
</html>

0

callbackfunction();

+0

謝謝!一些愚蠢的東西,我沒有看到! – Matt

0

var Countdowns = function(end, elements, timer, callback) { 
 
    var _seconds = 1000, 
 
    _minutes = _seconds * 60, 
 
    _hours = _minutes * 60, 
 
    _days = _hours * 24, 
 
    end = new Date(end) 
 
    timer, 
 
    calculate = function() { 
 
    var now = new Date(), 
 
     remaining = end.getTime() - now.getTime(), 
 
     data; 
 
    if (isNaN(end)) { 
 
     console.log('Invalid date/time') 
 
     return; 
 
    } 
 
    if (remaining <= 0) { // clear timer 
 
     clearInterval(timer); 
 
     // callback 
 
     if (typeof callback === 'function') { 
 
     callback() 
 
     } 
 
    } else { 
 
     if (!timer) { 
 
     timer = setInterval(calculate, _seconds); 
 
     } 
 
     data = { 
 
     'days': Math.floor(remaining/_days), 
 
     'hours': Math.floor((remaining % _days)/_hours), 
 
     'minutes': Math.floor((remaining % _hours)/_minutes), 
 
     'seconds': Math.floor((remaining % _minutes)/_seconds), 
 
     } 
 

 
     if (elements.length) { 
 
     for (x in elements) { 
 
      var x = elements[x]; 
 
      data[x] = ('00' + data[x]).slice(-2); 
 
      document.getElementById(x).innerHTML = data[x]; 
 
     } 
 
     } 
 
    } 
 
    }; 
 
    calculate(); 
 
}; 
 

 
var callbackfunction = function() { 
 
    console.log('Done!') 
 
}; 
 
Countdowns('12/25/2015 00:00:00 AM', ['days', 'hours', 'minutes', 'seconds']);
<span id="days">00</span> 
 
    <span id="hours">00</span> 
 
    <span id="minutes">00</span> 
 
    <span id="seconds">00</span>

+0

我現在看到它!謝謝。我花了一個小時試圖弄清楚這一點。大聲笑 – Matt