我编写了一个jQuery倒计时脚本,它可以在除Safari之外的所有其他浏览器中使用。
function countdown(secondsRemaining) {
secondsRemaining = Math.floor(secondsRemaining);
var days = Math.floor(secondsRemaining / 86400),
hours = Math.floor((secondsRemaining - (days * 86400)) / 3600),
minutes = Math.floor((secondsRemaining - (days * 86400) - (hours * 3600)) / 60),
seconds = secondsRemaining - (days * 86400) - (hours * 3600) - (minutes * 60);
if(secondsRemaining > 0) {
if(days < 10) { days = '0' + days; }
if(hours < 10) { hours = '0' + hours; }
if(minutes < 10) { minutes = '0' + minutes; }
if(seconds < 10) { seconds = '0' + seconds; }
jQuery('#countdown .days').html(days);
jQuery('#countdown .hours').html(hours);
jQuery('#countdown .minutes').html(minutes);
secondsRemaining--;
}
window.setTimeout(function() {
countdown(secondsRemaining);
}, 1000);
}
jQuery(function($) {
countdown(Math.floor((Date.parse('2012-02-15') - new Date().getTime())/1000));
});
你可以在这里看到它:
答案 0 :(得分:6)
问题在于:
Math.floor((Date.parse('2012-02-15') - new Date().getTime())/1000)
它在Safari中返回NaN(不是数字)。
尝试使用:
countdown(Math.floor((Date.parse('Feb 15, 2012') - new Date().getTime())/1000));
或者,您可以尝试以下方式:
countdown(Math.floor((new Date(2012, 1, 15, 0, 0, 0, 0).getTime() - new Date().getTime())/1000));
将来,您可以通过在代码中放置调试/警报/控制台消息来调试此类事情。您可能已经看到countDown
中的调试消息没有显示在Safari中,然后您可以推断出countDown
未被调用。从那里,您可以查看第一次调用countDown
的代码。看看那个,你可能想知道countDown
的论证是否错误,所以也许你会尝试打印出来。在Safari中,你会看到NaN,所以你会打印出每个单独的部分,直到你看到问题为止。从那里,你会发现它不喜欢Date.parse(),所以也许你会在Date.parse()上阅读,看看你是否给它正确的输入。