如何停止js setInterval

时间:2014-05-27 10:05:34

标签: javascript jquery

我写了一个基于间隔每1秒更改一次css背景图像的函数,它的工作正常,问题是现在我想停止切换背景图像的功能,并且间隔设置会覆盖我。

我的代码:

  var backgrounds = new Array(
'url(/srv/admin/img/announcement/envelope_blue.png)'
, 'url(/srv/admin/img/announcement/envelope_red.png)'

);

var current = 0;

function nextBackground() {   
    current++;
    current = current % backgrounds.length;
    jQuery("#open_msg_tlbr_img").css('background-image', backgrounds[current]);
    jQuery("#open_msg_tlbr_img").css('width','35px');
    jQuery("#open_msg_tlbr_img").css('height','35px');


}
setInterval(nextBackground, 1000);

jQuery("#open_msg_tlbr_img").css('background-image', backgrounds[0]);    

我尝试使用:clearInterval();

我如何阻止这个怪物?

3 个答案:

答案 0 :(得分:2)

使用变量保存setInterval的返回值,然后将其清除:

var interval = setInterval(nextBackground, 1000);
clearInterval(interval);

答案 1 :(得分:1)

分配setInterval返回的对象,以便稍后清除它,将setInterval返回的对象传递给clearInterval功能。请注意,您需要一个全局变量才能在多个函数中使用。

分配setInterval

返回的对象
intr = setInterval(nextBackground, 1000);

将setInterval引用对象传递给clearInterval

clearInterval(intr );

答案 2 :(得分:1)

setInterval()会返回一个区间ID,您可以将其传递给clearInterval()

var nxtBckgrnd = setInterval(nextBackground, 1000);

/* later */
clearInterval(nxtBckgrnd );

setInterval()

clearInterval()