我制作了一个像这样的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>
浏览器(Google Chorme)说:
Uncaught ReferenceError: target_date is not defined
即使我删除window.onload = function(){}
,仍然无效。
我做错了什么?
答案 0 :(得分:3)
这与variable scope有关。在target_date
中定义了window.onload
,使其成为 local 。如果要在该函数之外使用该变量,请将其全局声明为 ,方法是将其移出函数:
var target_date; /* Declared globally. */
window.onload = function(){
target_date = new Date("Aug, 15, 2019").getTime();
}
答案 1 :(得分: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);
}
答案 2 :(得分: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);
}