0

我有一个像这样的 jQuery 函数,用 OOP 风格编写:

$.fn.myscript = {

        timer: '',

start: function(duration){

            var x = 0;

    timer = setInterval(function(){

        x++;

    }, 1000);

},

    stop: function(){

        clearInterval(timer);
    }
}

首先,我调用start函数,然后计时器开始工作。但是当 İ 调用stop函数时,它会显示错误。问题是什么?谢谢!

4

1 回答 1

1

使用this.timer而不是仅timer在两个调用中:

$.fn.myscript = {
    timer: '',
    start: function(duration){
         var x = 0;
         this.timer = setInterval(function(){
             x++;
         }, 1000);
    },
    stop: function(){
        this.clearInterval(this.timer);
    }
}

假设您使用 x 并且您希望能够暂停和恢复,那么您的代码可能是这样的:

$.fn.myscript = {
    timer: 0, x: 0,
    start: function(duration){ // do both start and resume
         this.timer = setInterval(function(){
             this.x++;
         }, 1000);
    },
    stop: function(){
        this.x = 0;
        this.clearInterval(this.timer);
    },
    pause: function(){
        this.clearInterval(this.timer);
    },
    getX: function(){ // use this to get access to x
        return this.x;
    }
}
于 2013-10-26T15:13:10.570 回答