Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

setInterval u metodu objekta

[es] :: Javascript i AJAX :: setInterval u metodu objekta

[ Pregleda: 1090 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon setInterval u metodu objekta03.09.2010. u 18:49 - pre 137 meseci
Naisao sam jedan problem koji nisam imao ranije jer nisam koristio javascript na ovaj nacin(neka ovakva objektna notacija)
Evo koda posto se tu lepse vidi

Code:
$(document).ready(function(){

var myObj = function() { };

myObj.prototype = {
        
        init: function(options){
            
                var defaults ={
                speed:1000,
                increment: 1
            };
        
            this.state ={
                started: false,
                timer: 0,
                interval: 0,
                counter: 0
            };

            this.options = $.extend({}, defaults, options);
        },

        clock: function(){
            this.state.timer+=1;
                },
        start : function(){
            this.state.interval = setInterval(this.clock, this.options.speed);
        },
        stop : function(){
            clearInterval(this.state.interval);
        }
};

o = new myObj();
o.init({speed:2000});
o.start();
});

Problem je sto kad setInterval pozove ovu clock funkciju this ne upucuje na myObj nego na window,
pa je normalno this.state undefined.

E sad, kako ovo resiti..
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Humanity d.o.o.
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-4.sezampro.yu.

Sajt: www.nikolaposa.in.rs


+33 Profil

icon Re: setInterval u metodu objekta03.09.2010. u 20:56 - pre 137 meseci
Probaj ovako:
Code:
start: function() {
   this.state.interval = setInterval(self.clock, this.speed);
}

Ili ovako:
Code:
start: function() {
   var thisObject = this;
   this.state.interval = setInterval((function(){ thisObject.clock }, this.options.speed);
}

 
Odgovor na temu

Tudfa
Jovicevic Vladimir

Član broj: 152699
Poruke: 384
*.dynamic.sbb.rs.



+3 Profil

icon Re: setInterval u metodu objekta03.09.2010. u 23:19 - pre 137 meseci
Heh, hvala..Ovaj drugi je proradio uz manju prepravku.
Prvi daje poruku useless setInterval call missing quotes around argument.
A kod drugog sam dodao zagrade koje su falile - function(){thisObject.clock()} i proradilo.
 
Odgovor na temu

[es] :: Javascript i AJAX :: setInterval u metodu objekta

[ Pregleda: 1090 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.