1
var timer = 0
var startInterval = function( value ) {
    timer = setInterval( "checkNewPost();", value );
}
var stopInterval = function() {
    clearInterval( timer );
}

jQuery("#centerColumn a").click(function() {
    var a_id = jQuery(this).attr("id");
    var splitValue = a_id.split("-");
    var newValue = splitValue[1];

    if( newValue == "30" ) { 
        stopInterval;
        startInterval( 10000 );
    }
    else if( newValue == "1" ) {
        stopInterval;
        startInterval( 20000 );
    }
    else if( newValue == "5" ) {
        stopInterval;
        startInterval( 30000 );
    }
    else if( newValue == "pause" )
        stopInterval;
});

私のコードでわかるように、ロジックは非常に簡単です。newvalue が 30 に等しい場合、現在の間隔を停止し、setInterval で 10000 秒で再開します。そして、newValue が一時停止に等しい場合、すべての setInterval を停止します。

ここでの問題は、正しく動作しないことです。理由がわかりません。誰かがこれについて私を導くことができますか?あなたの助けは大歓迎です!

ありがとう!:)

4

4 に答える 4

3

交換

 stopInterval; // fonction simply put on stack

 stopInterval(); // fonction call
于 2012-04-24T07:10:21.657 に答える
3

stopInterval 関数を呼び出す必要があります

stopInterval();

括弧なしではうまくいかないと思います

于 2012-04-24T07:08:08.600 に答える
2

への呼び出しでstopIntervalは、後の括弧が欠落しているため、現在、実際にはそのメソッドを呼び出していません。

使ってみてくださいstopInterval();

于 2012-04-24T07:09:43.950 に答える
1

他のみんなは正しいです、あなたはを使うべきstopInterval()です。また、コードのよりコンパクトでIMOの読みやすいバージョンもあります。

$('#centerColumn a').click(function () {
    var id = this.id.split('-')[1];
    var value = {
        30: 10000,
        1: 20000,
        5: 30000
    };
    id ==== 'pause' && stopInterval();
    if (value[id]) {
        stopInterval();
        startInterval(value[id]);
    }
});
于 2012-04-24T07:19:12.727 に答える