2
$(function() {
    var count = 20;
    countdown = setInterval(function() {
        $("p.countdown").html(count + "seconds remailing!");

        if (count == 0) {
            window.location = 'http://stackoverflow.com/';
        }

        count--;
    }, 1000);
});​

<p class="countdown">

ブラウザーを更新するたびに、カウントダウンが 20 から始まります。ブラウザーを更新するときにしたいです。カウント数が毎回 20 から始まるわけではありません。それは実際に始まった時から始まりますが、コードにいくつかの変更を加えるにはどうすればよいですか?

4

3 に答える 3

2

おそらく最良の方法は、現在の時刻をCookie(または他のローカルストレージ)に保存し、ページの読み込み時に確認することです。存在する場合は、それを使用してください。そうでない場合は、20から開始します。

クロスブラウザストレージの管理の複雑さを回避するには、を使用できますamplify.store。間隔を繰り返すたびに値を更新するだけです。

値の設定は非常に簡単です。

amplify.store( 'countdown', count );

後でそれらを取得するように:

amplify.store( 'countdown' );

コードは次のようになります。

$(function() {
    // Pick up where we left off, or start from 20
    var count = amplify.store('count') || 20;
    countdown = setInterval(function() {
        $("p.countdown").html(count + " seconds remailing!");
        if (count <= 0) {
            // Clear our stored value
            amplify.store('count', null);
            window.location = 'http://stackoverflow.com/';
        }
        // Update stored value
        amplify.store('count', count--);
    }, 1000);
});​

デモ: http: //jsfiddle.net/yWTR7/(数秒後に「実行」を押します)

于 2012-05-20T02:42:13.140 に答える
0

最初にphpセッション変数またはdatbaseで時間(最大時間)を節約し、1秒ごとまたは任意の間隔でajaxクエリを実行すると、php変数の値が減少します。新しいページがロードされたら、javascriptでphp変数の値をロードします...

代替 方法Cookieを使用してタイマー値を保存できます。

于 2012-05-20T02:49:23.203 に答える
0

ローカルストレージを使用したものは次のとおりです。

$(function() {
    var count = localStorage.getItem('count') || 20,
        countdown = setInterval(function() {
            localStorage.setItem('count', count);
            $("p.countdown").html(count + " seconds remaining!");

            if (count === 0) {
                clearInterval(countdown);
                localStorage.removeItem('count');
                window.location = 'http://stackoverflow.com/';
            }

            count--;
        }, 1000);
});

フィドル

于 2012-05-20T02:56:45.183 に答える