Javascript clearInterval和setInterval()的行为不符合预期

时间:2012-04-24 07:06:34

标签: javascript jquery setinterval

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 个答案:

答案 0 :(得分:3)

你需要调用stopInterval函数

stopInterval();

我认为没有括号

就行不通

答案 1 :(得分:3)

替换

 stopInterval; // fonction simply put on stack

 stopInterval(); // fonction call

答案 2 :(得分:2)

您对stopInterval的调用缺少后面的括号,因此您当前并未实际调用该方法。

尝试使用stopInterval();

答案 3 :(得分: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]);
    }
});