-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

まず、ページのカウントダウンタイマーはPHPではなくjava-scriptです(私はあなたの質問を編集しました、modsはうまくいけばそれをOKします)。

あなたのjava-scriptはカウントダウンの開始を直接設定しています:

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

...
..
.

あなたがする必要があるのは、カウントダウンがカウントダウンしている日付と比較してそれらの値を設定することです!これを行うには、次のようにします。

  1. 今からカウントダウン日までの違いを判断する
  2. カウントダウンタイマーの各日付部分を計算します(これを見てください)
  3. 各日付部分を変数に入れ、上記のコードサンプルのビットを関連する変数に置き換えます。
于 2012-08-22T21:24:06.603 に答える