清除javascript对象中设置的超时

时间:2013-04-28 19:42:09

标签: javascript oop settimeout

我在尝试清除对象中设置的超时时遇到了麻烦,我有一个像这样的对象:

var banner=function(options){

    this.s_btn=options.s_btn;
    this.interval=null;

    this.pos=0;
    this.maxPos=4;

    var _obj=this;

    _obj.s_btn.bind("click",function(){
        //clear Timeout
        clearTimeout(_obj.interval);
        _obj.interval=null;
        //Change banner with some FX
        _obj.changeBanner($(this).index());
        //start timeout Again
        _obj.setInt();
    });
    //Function that starts timeout
    this.setInt=function(){
        _obj.interval=setTimeout(function(){
            //where slide to change
            var to=(_obj.pos==_obj.maxPos)?0:Number(_obj.pos)+1;
            //Change banner with some FX
            _obj.changeBanner(to);
            //starts bucle
            _obj.setInt();
        },_obj.time);
    }
    _obj.setInt();
}

有两种方法: - changeBanner:它改变了横幅的图像 - setInt:它启动一个超时循环,每隔X毫秒执行一次changeBanner函数。

此外,我已将click事件绑定到元素;我想重置超时循环,但我做错了。 :S

我将超时函数存储在this.interval中,当我点击之前调用的元素时,我将其清除。

2 个答案:

答案 0 :(得分:0)

你在示例

中拼错了区间错误

清除超时(_obj.inerval)

答案 1 :(得分:0)

我通过将setTimeout和clearTimeout引用到窗口来解决它:

window.setTimeout(_obj.interval)

window.clearTimeout(_obj.interval)