2013-10-21 56 views
0

我已經做了JavaScript計數器是這樣的:JavaScript計數器不工作

window.onload = function(){ 
    var target_date = new Date("Aug, 15, 2019").getTime(); 
} 
var days, hours, minutes, seconds; 
var countdown = document.getElementById("countdown"); 

setInterval(function(){ 
    var current_date = new Date().getTime(); 
    var seconds_left = (target_date - current_date)/1000; 

    days = parseInt(seconds_left/86400); 
    seconds_left = seconds_left % 86400; 

    hours = parseInt(seconds_left/3600); 
    seconds_left = seconds_left % 3600; 

    minutes = parseInt(seconds_left/60); 
    seconds = parseInt(seconds_left % 60); 

    countdown.innerHTML= days + "d, " + hours + "h, " + minutes + "m, " + seconds + "s"; 
}, 1000); 

HTML:

<span id="countdown"></span> 

瀏覽器(谷歌Chorme)說:

Uncaught ReferenceError: target_date is not defined 

即使如果我刪除了window.onload = function(){},那麼仍然不起作用。 我做錯了什麼?

+0

將'target_date'聲明爲'windo w.onload'範圍 – geevee

+0

當我刪除window.onload它工作正常 - http://jsfiddle.net/dangoodspeed/6Xj5c/ –

回答

0

改變你的第一"}"到腳本的末尾

window.onload = function(){ 
      var target_date = new Date("Aug, 15, 2019").getTime(); 

     var days, hours, minutes, seconds; 
     var countdown = document.getElementById("countdown"); 

     setInterval(function(){ 
      var current_date = new Date().getTime(); 
      var seconds_left = (target_date - current_date)/1000; 

      days = parseInt(seconds_left/86400); 
      seconds_left = seconds_left % 86400; 

      hours = parseInt(seconds_left/3600); 
      seconds_left = seconds_left % 3600; 

      minutes = parseInt(seconds_left/60); 
      seconds = parseInt(seconds_left % 60); 

      countdown.innerHTML= days + "d, " + hours + "h, " + minutes + "m, " + seconds + "s"; 
     }, 1000); 
     } 
3

這一切都與variable scope有關。這裏您的target_date在您的window.onload內定義,使其本地爲該功能。如果你想使用的變量,函數外,聲明它全球通過移動它的功能之外:

var target_date; /* Declared globally. */ 
window.onload = function(){ 
    target_date = new Date("Aug, 15, 2019").getTime(); 
} 
0

剛將窗口的大括號"}"移動到腳本末尾

window.onload = function(){ 
    var target_date = new Date("Aug, 15, 2019").getTime(); 
    var days, hours, minutes, seconds; 
    var countdown = document.getElementById("countdown"); 

    setInterval(function(){ 
     var current_date = new Date().getTime(); 
     var seconds_left = (target_date - current_date)/1000; 

     days = parseInt(seconds_left/86400); 
     seconds_left = seconds_left % 86400; 
     hours = parseInt(seconds_left/3600); 
     seconds_left = seconds_left % 3600; 

     minutes = parseInt(seconds_left/60); 
     seconds = parseInt(seconds_left % 60); 

     countdown.innerHTML= days + "d, " + hours + "h, " + minutes + "m, " + seconds + "s"; 
    }, 1000); 
}