Toon posts:

[JS] Recursieve timerfunctie binnen een functie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Weet iemand hoe ik onderstaand voorbeeld werkend kan krijgen?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function Test()
{
    function Timer()
    {
        alert('Test.');
        
        setTimeout('Timer()', 1000);
    }
    
    Timer();
}

Test();

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

timer buiten test zetten?

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

Topicstarter
Ja dat weet ik, maar ik wil juist een timer binnen een functie gebruiken. Ik kan me niet voorstellen dat dat onmogelijk is binnen javascript?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

setTimeout werkt op globaal niveau. Hij kent de functie Timer() niet en dus krijg je een foutmelding.

Een functie in een functie op deze manier (dus niet als prototype) is sowieso onzin natuurlijk.

[ Voor 71% gewijzigd door Bosmonster op 15-11-2004 09:56 ]


  • Skaah
  • Registratie: Juni 2001
  • Niet online
Functies in functies kunnen volgens mij niet in JS. Als je timer() buiten test() zet, staat timer in de global scope en kun je 'm nog steeds aanroepen. Waarom wil je het persé zo?

[ Voor 4% gewijzigd door Skaah op 15-11-2004 09:58 . Reden: was onzin ]


Verwijderd

Topicstarter
Ik wil een klasse bouwen waarmee je een tekst kunt laten scrollen. Ik heb dus de klasse 'ScrollText':

JavaScript:
1
2
3
4
5
6
7
8
9
function ScrollText()
{
    this.sText = '';
    this.oCSS = null;
    this.iSpeed = null;
    this.iDirection = null;
    this.bLoop = false;
    this.Play = Play;
}

En de method 'Play()' (van deze klasse):

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Play()
{
    with (this) 
    {
        function Animate()
        {
            alert('Scroll de tekst.');
            
            setTimeout('Animate()', 1000);
        }
        
        Animate();
    }
}

Het is dus de bedoeling dat ik d.m.v. <objectnaam>.Play() een tekst door het beeld kan laten scrollen.

  • Wouter Tinus
  • Registratie: Oktober 1999
  • Niet online

Wouter Tinus

Whee!

Waarom niet gewoon Animate(this) aanroepen in Play?

[ Voor 9% gewijzigd door Wouter Tinus op 15-11-2004 10:17 ]

Professioneel Hyves-weigeraar


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Play()
{
    with (this) 
    {
        Animate();
    }
}

function Animate()
{
  alert('Scroll de tekst.');
        
  setTimeout('Animate()', 1000);
}

Verwijderd

Topicstarter
André schreef op maandag 15 november 2004 @ 10:18:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Play()
{
    with (this) 
    {
        Animate();
    }
}

function Animate()
{
  alert('Scroll de tekst.');
        
  setTimeout('Animate()', 1000);
}
Aan bovenstaande oplossing zat ik ook al te denken. Ik denk dat dat inderdaad de beste oplossing is. Bedankt!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:00

crisp

Devver

Pixelated

TK84: zie ook je andere topic. Ik denk dat je javascript verward met java. Javascript zit gewoon anders in elkaar ;)

Intentionally left blank


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Bosmonster schreef op maandag 15 november 2004 @ 09:54:
Een functie in een functie op deze manier (dus niet als prototype) is sowieso onzin natuurlijk.
Ooit gehoord van closures in Javascript?

"You're only as good, as what you did last week."

Pagina: 1