每次加载javascript倒计时重置?

时间:2012-08-22 21:11:01

标签: javascript countdown

我完全迷失了这个javascript(查看源代码):http://www.fff2012.com

以及打开页面的以下php:

这是一个倒计时器,需要在每个页面加载后刷新。

    <?php
function real_date_diff($date1, $date2 = NULL)  
{
    $diff = array();

    if(!$date2) {
        $cd = getdate();
        $date2 = $cd['year'].'-'.$cd['mon'].'-'.$cd['mday'].' '.$cd['hours'].':'.$cd['minutes'].':'.$cd['seconds'];
    }

    $pattern = '/(\d+)-(\d+)-(\d+)(\s+(\d+):(\d+):(\d+))?/';
    preg_match($pattern, $date1, $matches);
    $d1 = array((int)$matches[1], (int)$matches[2], (int)$matches[3], (int)$matches[5], (int)$matches[6], (int)$matches[7]);
    preg_match($pattern, $date2, $matches);
    $d2 = array((int)$matches[1], (int)$matches[2], (int)$matches[3], (int)$matches[5], (int)$matches[6], (int)$matches[7]);

    for($i=0; $i<count($d2); $i++) {
        if($d2[$i]>$d1[$i]) break;
        if($d2[$i]<$d1[$i]) {
            $t = $d1;
            $d1 = $d2;
            $d2 = $t;
            break;
        }
    }

    $md1 = array(31, $d1[0]%4||(!($d1[0]%100)&&$d1[0]%400)?28:29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $md2 = array(31, $d2[0]%4||(!($d2[0]%100)&&$d2[0]%400)?28:29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $min_v = array(NULL, 1, 1, 0, 0, 0);
    $max_v = array(NULL, 12, $d2[1]==1?$md2[11]:$md2[$d2[1]-2], 23, 59, 59);
    for($i=5; $i>=0; $i--) {
        if($d2[$i]<$min_v[$i]) {
            $d2[$i-1]--;
            $d2[$i]=$max_v[$i];
        }
        $diff[$i] = $d2[$i]-$d1[$i];
        if($diff[$i]<0) {
            $d2[$i-1]--;
            $i==2 ? $diff[$i] += $md1[$d1[1]-1] : $diff[$i] += $max_v[$i]-$min_v[$i]+1;
        }
    }

    return $diff;
}
?>


I'm not sure what to edit in order to make the countdown not refresh on each page load. 

2 个答案:

答案 0 :(得分:1)

每次加载页面时,倒计时插件的参数都是相同的(见下文 - 20天,10秒)。您必须计算事件之前的天/小时/分钟/秒,并将此计算结果作为参数传递,以正确初始化倒计时。看起来这个目前还没有动态生成 - 但我看不到源代码看不到PHP代码,所以我不能确定你目前正在尝试做什么。

            (function($){
            soundManager.setup({
                url: 'js/swf/',
                debugMode: false
            });
            $(window).load(function(){


                    $('#countdown').countdown({
                                                    timestamp   : { 'days'      : 20,
                                        'hours'     : 0,
                                        'minutes'   : 0,
                                        'seconds'   : 10                                            },
                        duration    : 360,

                        soundURL    : 'js/flip.mp3',
                        volume: 25,
                        callback    : function(days, hours, minutes, seconds){

                                var message = "";

                                message += days + " day" + ( days==1 ? '':'s' ) + ", ";
                                message += hours + " hour" + ( hours==1 ? '':'s' ) + ", ";
                                message += minutes + " minute" + ( minutes==1 ? '':'s' ) + " and ";
                                message += seconds + " second" + ( seconds==1 ? '':'s' ) + " <br />";

                                $('.callback').html(message);
                            }
                        })

                })
            })(jQuery)

答案 1 :(得分:1)

首先,页面上的倒计时器是用java脚本而不是PHP(我编辑了你的问题,mods希望没问题)。

您的java脚本直接设置了倒计时的开始:

$('#countdown').countdown({
timestamp   : { 'days'      : 20,
'hours'     : 0,
'minutes'   : 0,
'seconds'   : 10    

...
..
.

您需要做的是将这些值与倒计时倒计时的日期进行比较!你可以这样做:

  1. 确定与现在之间的差异,直到倒计时
  2. 计算倒数计时器的每个日期部分(查看this
  3. 将每个日期部分放入变量中,并将上述代码示例中的位替换为相关变量。