0

設定する必要がある永久カウントダウンタイマーがあり、適切に行う方法に苦労しています。

ここにある coutdown というプラグインを使用しています。

http://www.littlewebthings.com/projects/countdown/

したがって、これまでのセットアップには次のコードが含まれます。

$(document).ready(function() {
    $('#countdown_contain').countDown({
        targetDate: {
            'day':      23,
            'month':    6,
            'year':     2013,
            'hour':     12,
            'min':      0,
            'sec':      0
        },
        omitWeeks: true
    });
});

つまり、2013 年 6 月 23 日の日曜日までのカウントダウンです。ゼロになったら、リセットしてから、2 週間後の同じ時間までカウントダウンを開始する必要があります。したがって、基本的には、日曜日の正午に 2 週間のカウントダウン タイマーが必要です。

私の考えでは、ページがロードされるたびにphpスクリプトへのajax呼び出しを行い、次のカウントダウン日付と比較して現在の位置を確認し、プラグインが使用する情報になるJS変数に応答を入力する. おそらくそれは多すぎますか?

目標を達成するために、php または javascript をどのように構成すればよいですか?

4

2 に答える 2

3

ajax の代わりに、次の有効日を計算する JavaScript 関数を作成し、それを使用してカウンター時間をシードします。そうすれば、追加のサーバー対話はありません。

自動的にリセットする限り、onCompleteイベントを使用してコントロールを再シードします。


targetDate 構造を動的に構築するには、 moment.js を使用してこのようなことを行います。これは、職場での「非喫煙者のスモークブレイク」中に理論に基づいてコーディングしたため、テストされていないことに注意してください。編集してください。100% 機能しない場合は反対票を投じないでください。

function getTargetDate() {
     // initialize the static stuff...
     var retval = { 'hour':12,'min':0,'sec':0 }
     // good news! using Moment.js in the USA, Sunday is considered first day of week
     // so all we have to do is calculate the correct week number...
     var currentWeekOfYear = moment().week(); 
     // assume that we're targeting odd weeks, so 
     //  if it's odd, add 2, if it's even, add 1
     var nextTargetWeek = currentWeekOfYear;
     if( currentWeekOfYear % 2 == 0) {
         nextTargetWeek += 1;
     } else {
         nextTargetWeek += 2;
     }

     var nextTarget = moment().week(nextTargetWeek);

     // moment retains the current day, so we need to set it to sunday.
     nextTarget = nextTarget.day(0);

     // now, enrich the return value
     retval.day = nextTarget.date();
     retval.month = nextTarget.month();
     retval.year = nextTarget.year();

     return retval;
}
于 2013-06-12T18:45:42.887 に答える
1

これは正確な答えではありませんが、正しい方向に進むはずです。

変数を JavaScript ファイルに直接エコーすることができます。

$(document).ready(function() {
$('#countdown_contain').countDown({
    targetDate: {
        'day':      <?php echo(json_encode($day)); ?>,
        'month':    <?php echo(json_encode($month)); ?>,
        'year':     <?php echo(json_encode($year)); ?>,
        'hour':     <?php echo(json_encode($hour)); ?>,
        'min':      <?php echo(json_encode($min)); ?>,
        'sec':      <?php echo(json_encode($sec)); ?>
    },
    omitWeeks: true
});
});

PHP スクリプトでは、strtotime()を使用 して次の目標日を計算できます。

于 2013-06-12T18:46:51.977 に答える