我有一个简单的倒计时脚本。该代码适用于chrome但不适用于Firefox。在Firefox中它显示NaN,但chrome显示倒计时的任何想法为什么会发生这种情况?
function CountDownTimer(time, name) {
var counter = setInterval(function(){
var today = new Date();
var expire = new Date(time);
var timeRemains = expire - today;
var days = Math.floor(timeRemains / (1000 * 60 * 60 * 24));
var hours = Math.floor(timeRemains / (1000 * 60 * 60));
var mins = Math.floor(timeRemains / (1000 * 60));
var secs = Math.floor(timeRemains / 1000);
var dd = days;
var hh = hours - days * 24;
var mm = mins - hours * 60;
var ss = secs - mins * 60;
if (expire < today) {
clearInterval(counter);
document.getElementById(name).innerHTML = '<span class="expire">expire!</span>';
return;
} else {
if (dd < 10) {
dd = "0" + dd;
}
if (hh < 10) {
hh = "0" + hh;
}
if (mm < 10) {
mm = "0" + mm;
}
if (ss < 10) {
ss = "0" + ss;
}
document.getElementById(name).innerHTML = dd + ' : ' + hh + ' : ' + mm + ' : ' + ss;
}
}, 1000 );
}
CountDownTimer("2012-07-06 19:00:00", "Time1");
答案 0 :(得分:2)
更改以下内容的日期格式:
CountDownTimer("June 7, 2012 19:00:00", "Time1");
答案 1 :(得分:2)
Date()函数似乎并不适用于所有浏览器。尝试在其上使用setUTC函数,如下所示:
today.setUTCFullYear(2012);
today.setUTCHours(19, 0, 0, 0);
更新:Date()构造函数适用于所有浏览器,而不是在使用“不正确”字符串时。试试这个:
var today = new Date(2012,6,7,19,0,0)
答案 2 :(得分:0)
NaN
代表的不是数字。
如果Leo的建议没有帮助,可能值得添加一些零星的console.log()
来找出问题所在。
答案 3 :(得分:0)
问题在于新的Date()格式,这种格式在浏览器中并不一致。
Problem with date formats in JavaScript with different browsers。
您可以通过将 - 字符转换为/来使其工作。 Cameron的答案应该提供良好的跨浏览器行为,否则考虑使用第三方库,如moment.js
https://stackoverflow.com/questions/802861/javascript-date-manipulation-library