2013-10-21 2 views
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); 

HTML :

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

브라우저 (구글 Chorme)는 말한다 : 심지어

Uncaught ReferenceError: target_date is not defined 

window.onload = function(){}을 제거해도 여전히 작동하지 않습니다. 내가 잘못 했나요?

+0

'target_date'를'windo w.onload' scope – 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_datewindow.onload에 정의되어 있으며 해당 기능에 대해 로컬이됩니다. 당신은 그 함수의 외부 변수를 사용하려면, 함수의 외부로 이동하여 그것을 세계적으로를 선언 :

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

그냥 중괄호를 이동 "}" window.onload의 끝까지 스크립트

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); 
} 
관련 문제