0

私の質問は、論理的で JavaScript に関連しています。

私の目標は、時間の経過とともに同じ変数の 2 つの状態をjquery カウンターにフィードして、x 秒ごとに開始状態から終了状態に増加するようにすることです。

サイクルの終わりに、終了状態を次の開始状態にしたいなど...

php ファイルから変数値を取得することに注意してください。(編集) 変数は関数の外で宣言されます:

var $publishersCurvalue,
    $minTime,
    ...

これが私のカウンターです。5 秒ごとに更新されます。結果として、1 つの変数状態 ( $publishersCurvalue )しか使用していないため、前の状態から新しい状態にジャンプします。

サイクルごとに以前の値と新しい値の両方を取得するにはどうすればよいですか? いくつかのテクニックを試しましたが、今のところうまくいきません。

私の意図は、カウンターが 2 つの異なる値を読み取ったときに発生するインクリメント アニメーションをトリガーすることです。

var $i = 0;
function publisherCounter() {
    $.getJSON("counter.php?t=p", function(result) {
        // defalut values
        $minTime                      = result[0].minTime;
        $max                          = result[0].max;
        $curTime                      = result[0].curTime;

        // current value
        $publishersCurvalue           = result[0].curValue;

        // Publishers values
        $publisherMinResult           = result[0].min;
        $publisherIncPerDay           = result[0].incPerDay;

        // frequency
        $publisherIncPerDayResultTemp = parseInt((($curTime - $minTime)/86400) * $publisherIncPerDay);
        $publisherIncPerDayResult     = parseInt(86400/$publisherIncPerDayResultTemp);

        $('#counter_publishers').addClass('counter-analog').counter({
            initial: $publishersCurvalue,
            direction: 'up',
            interval: 1,
            format: '9999999',
            stop: $publishersCurvalue
        });

    });
    $i++;
};
setInterval(publisherCounter, 5000);
publisherCounter();
4

1 に答える 1

0

$publishersCurvalue単純な変数から 2 つのプロパティを持つオブジェクトに変更します。

// wherever you declare it...
var $publishersCurvalue = {
    prev: 0,
    cur: 0
};

...

// current value
$publishersCurvalue.cur = result[0].curValue;

...

$('#counter_publishers').addClass('counter-analog').counter({
    initial: $publishersCurvalue.prev,
    direction: 'up',
    interval: 1,
    format: '9999999',
    stop: $publishersCurvalue.cur
});

あなたの意図がよくわからないので、 と の使い方を変更する必要があるかもしれませprevcur

于 2013-03-29T14:09:32.670 に答える