Javascript在Safari中无效

0 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));
});
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到它:

http://davedesigner.launchinhd.com/

Joh*_*lak 7

问题在于:

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