0

私の質問には、このサイトで部分的な解決策がありますが、完全な回答ではありません。

WordPress のホームページに、Web アプリケーション内で回答された質問の数のカウンターを表示します。これは、jQuery と AJAX を使用して表示され、php ファイルから質問数を取得し、このコードで問題なく動作します。

jQuery(document).ready(function() {
function load() {
jQuery.get('/question_count.php', function(data) {jQuery('#p1').html( data );  });
}
load();
setInterval(load,10000);
});

すぐに表示するのではなく、取得した新しい番号までカウントアップして表示する方法はありますか?

4

2 に答える 2

0

このようなもの?

function countTo(n) {
    var p = $("#p1"),
        c = parseInt(p.html(), 10) || 0,
        dir = (c > n ? -1 : 1);    // count up or down?

    if (c != n) {
        p.html((c + dir) + "");

        setTimeout(function() {
            countTo(n);
        }, 500);
    }
}

成功ハンドラーで呼び出します

jQuery.get('/question_count.php', function(data) {
    var n = parseInt(data, 10);

    countTo(n);
});

于 2013-05-10T21:55:31.700 に答える
0

カウントアップが人間の目に見えるようにするには、setInterval イベントを実行する必要があります。これは、カウントが最後に到達するまでに長い時間がかかる十分な数の質問に最終的に到達する場合に問題になる可能性があります。

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

function load(){
   jQuery.get('/question_count.php', function(data){
      var curr = 0;
      var max = parseInt(data);
      var interval = setInterval(function(){
        if(curr==max){
           clearInterval(interval);
        }
        jQuery('#p1').html( curr );
        curr+=1; //<-- if the number of questions gets very large, increase this number
      },
      10 //<-- modify this to change how fast it updates
      });
   }
}
于 2013-05-10T21:56:42.023 に答える