Avatar billede horsmark Nybegynder
24. november 2004 - 06:02 Der er 10 kommentarer og
3 løsninger

setTimeout der kalder et objekt (this)

Jeg har rodet rundt med at kunne oprette et objekt i forbindelse med reload af et image dertil byggede jeg en klasse (objekt) hvor der i klassen er en setTImeout funktion. MEN jeg kan ikke hitte hvordan jeg sender et objekt med i setTimeout´en.

eks.
var periode = new Periode()

function Periode(){
this.iLoop = 10
}

Periode.prototype.myLooop = function(){
this.iLoop++
if( this.iLoop < 10){
  setTimeout("this.myLoop()", 1000)
} else {
  alert("OleBole er min helt nummer ét og slutprut")
  return
}
}

Det der ikke virker er setTimeout("this.myLoop()"... hvad gør en klog mand ?
Avatar billede thomas_yde Nybegynder
24. november 2004 - 10:04 #1
<script language="Javascript">
var periode = new Periode()

function Periode(){
this.iLoop = 1
}

Periode.prototype.myLooop = function(){
this.iLoop++
if( this.iLoop < 10){
    alert("timeout");
  setTimeout("periode.myLooop()", 1000)
} else {
  alert("OleBole er min helt nummer ét og slutprut")
  return
}
}
</script>


<input type="button" value="Test" onclick="periode.myLooop();">

Du kalder den lidt forkert synes jeg :)
Avatar billede powernodes Nybegynder
24. november 2004 - 10:09 #2
hvis du skal køre en "this.*" i en timeout skal du gøre sådan

var me = this;
setTimeout("me.*()",1000);
Avatar billede horsmark Nybegynder
24. november 2004 - 10:18 #3
thomas yde >>
ja det virker MEN hvis jeg nu initierer objectet som nedenstående spiller det ikke:
var sitemark = new Periode()

powernodes >> virker ikke får en fejl
    function Periode(){
        this.iLoop = 1
    }

    Periode.prototype.myLooop = function(){
        var obj = this
        this.iLoop++
        if( this.iLoop < 10){
            alert("timeout");
          setTimeout("obj.myLooop()", 1000)
        } else {
          alert("OleBole er min helt nummer ét og slutprut")
          return
        }
    }

    var periode = new Periode()
    periode.myLooop()
Avatar billede horsmark Nybegynder
24. november 2004 - 10:20 #4
obj is not defined *dammit*
Avatar billede olebole Juniormester
24. november 2004 - 12:57 #5
<ole>

Callbacks og timeouts skal man liiiige øve sig lidt på i JS-OOP, men når først logikken går op for én, er det ikke så langhåret endda  ;o)

Opret den variabel, powernodes viste dig og læg så kaldet i en anonym funktion - så triller Julesvinet derudad:
  setTimeout(function(){obj.myLooop()}, 1000)

/mvh
</bole>
Avatar billede olebole Juniormester
24. november 2004 - 12:59 #6
... og må jeg tillade mig at føle mig truffet og takke for den overvældende alert?  ;D
Avatar billede thomas_yde Nybegynder
24. november 2004 - 12:59 #7
Ja selvfølgelig :)

<script language="Javascript">
var periode = new Periode()

function Periode(){
this.iLoop = 1
}

Periode.prototype.myLooop = function(){
var obj = this;

this.iLoop++
if( this.iLoop < 10){
    alert("timeout");
  setTimeout(function(){obj.myLooop()}, 1000)
} else {
  alert("OleBole er min helt nummer ét og slutprut")
  return
}
}
</script>


<input type="button" value="Test" onclick="periode.myLooop();">
Avatar billede horsmark Nybegynder
24. november 2004 - 13:58 #8
dammit anede ikke at man kunne smide anonym funktion ind (har lige læst msdn omkring setTimeout og der står det jo højt og larmende *tsktsk* Anyway thanx for the help guys og jeg deler pointsne til jer begge pga at i begge har kodet på det på samme tid med samme løsning :-)
Avatar billede horsmark Nybegynder
24. november 2004 - 13:59 #9
olebole og thomas smid lige besvarelser ellers går pointdelingen ikke til andre end migselv *GG*
Avatar billede thomas_yde Nybegynder
24. november 2004 - 14:15 #10
Jeg ved ikke hvorfor, men olebole er ALTID lidt hurtigere end mig.

tror han overvåger mig....
Avatar billede thomas_yde Nybegynder
24. november 2004 - 14:15 #11
nå men et svar.
Avatar billede thomas_yde Nybegynder
24. november 2004 - 14:18 #12
Avatar billede olebole Juniormester
24. november 2004 - 14:23 #13
Nu tilkommer det jo ikke mig at bestemme pointfordelingen - men faktisk synes jeg, powernodes burde have 'en slik' for et yderst vigtigt indspark.
Uden at oprette en variabel, der refererer til objekt-instansen, kan vi ikke få fat i instansen med nok så mange anonyme funktioner.
Bevares, det ville under alle omstændigheder være blevet løst (jeg ved jo, hvor han har lært 'tricket' ... hehe), men han bidrog trods alt med en meget vigtig detalje  :)

thomas >> Prøv at skille din PC ad og se, hvem der ligger og lurer bag din CPU-sokkel  ;D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester