-1

異なる値()のものがいくつか あります。それらすべてをカウントダウンしたいのですが、次のようなことができると思いました:<span class="timer">342</span>

            $('.timer').ready(function() {
                timer = setInterval(function() {
                    sec = $('.timer').text();
                    $('.timer').text(--sec);
                    if (sec == 0) {
                        clearInterval(timer);
                        location.href = 'accounts.php';
                    }
                }, 1000);
            });

エラーは、または何かの複数のオブジェクトが原因で Javascript が混乱.timerし、スパンに奇妙な値が生成されることです。

最初のタイマーがゼロになると、リロードする必要があります。jQuery の使用。スパン 数 は不定。シンプルに保ち、余分なプラグインや大きなスクリプト ファイルを使用しないようにしたいと考えています。

4

2 に答える 2

1

.readyのみに使用されdocument、DOM が完全に解析された時点を示します。この関数内でthis、ドキュメントを参照します。私はそれを別の方法で書きます:

$(document).ready(function() {

    timer = setInterval(function() {
        $('.timer').each(function(){
            var $this = $(this);
            var countdown = parseInt($this.text()) - 1;

            $this.text(countdown);
            if (countdown == 0) {
                clearInterval(timer);
                location.href = 'accounts.php';
            }
        });
    }, 1000);
});

重要:

  1. .eachすべてのタイマーを反復処理するために使用します
  2. parseInt文字列から整数を取得するために使用します

これExample-Fiddleが機能します。

于 2013-08-04T22:12:41.727 に答える