-3

我完全迷失了这段 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. 
4

2 回答 2

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)
于 2012-08-22T21:23:10.603 回答
1

首先,您页面上的倒数计时器是在 java 脚本中而不是 PHP 中(我已经编辑了您的问题,希望 mods 可以解决)。

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

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

...
..
.

您需要做的是与倒计时日期相比设置这些值!你可以这样做:

  1. 确定从现在倒计时日期的差异
  2. 计算倒数计时器的每个日期部分(看看这个
  3. 将每个日期部分放入一个变量中,并将上述代码示例中的位替换为相关变量。
于 2012-08-22T21:24:06.603 回答