Avatar billede claushelth Nybegynder
01. marts 2004 - 17:07 Der er 4 kommentarer og
1 løsning

setTimeout funk i klasse

Hvorfor virker dette ikke?

<script language="javascript">
redirID = {
        TestFunk         : function(tim,ost){       
            setTimeout('this.Redir()',3000);
        },
        Redir            : function(){
            alert('Test med redir');
        }
    }

redirID.TestFunk();   
</script>

den kommer fint til TestFunk men så får jeg en intetsigende fejl? Hvis jer kalder Redir() direkte fra TestFunk() så virker den fint, men ikke når jeg gør det med setTimeout()...??

Claus
Avatar billede claushelth Nybegynder
01. marts 2004 - 17:09 #1
hov...der skal selvfølgelig ikke stå nogle argumenter i TestFunk...det er ikke det der er fejlen! (skrivefejl)
Avatar billede Slettet bruger
02. marts 2004 - 11:07 #2
Du kan ikke bruge "this" ved timeouts. setTimeout er en funktion, der tilhører window-objektet, og alle referencer til variable, funktioner, etc. skal udgå derfra. Så du burde bare kunne skrive:

setTimeout("redirID.TestFunk();", 3000);
Avatar billede Slettet bruger
02. marts 2004 - 11:08 #3
Du kan også lægge en reference til klasseobjektet i en global variabel:

<script language="javascript">
obj = null;

redirID = {
        TestFunk        : function(tim,ost){
            obj = this;       
            setTimeout('obj.Redir()',3000);
        },
        Redir            : function(){
            alert('Test med redir');
        }
    }

redirID.TestFunk();   
</script>
Avatar billede claushelth Nybegynder
02. marts 2004 - 11:21 #4
<script language="javascript">

redirID = {
        TestFunk        : function(){     
            setTimeout('Redir()',3000);
        },
        Redir            : function(){
            alert('Test med redir');
        }
    }

redirID.TestFunk();   
</script>

Her er den meget simplificeret, og den virker stadig ikke :-(
Får en fejl når timeout er gået (3 sek): Object Expected
Avatar billede claushelth Nybegynder
02. marts 2004 - 13:32 #5
<script language="javascript">

redirID = {
        TestFunk        : function(){     
            setTimeout(Redir,3000);
        },
        Redir            : function(){
            alert('Test med redir');
        }
    }

redirID.TestFunk();   
</script>
Dette virker :-)
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