Javascript在Safari中无效

时间:2011-11-19 01:06:47

标签: javascript safari

我编写了一个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));
});

你可以在这里看到它:

http://davedesigner.launchinhd.com/

1 个答案:

答案 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()上阅读,看看你是否给它正确的输入。