[JS] Variabele meegeven aan functie in setTimout

Pagina: 1
Acties:

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Is er een mogelijkheid om een variabele mee te geven aan een functie in setTimeout?
code:
1
timer = setTimeout('functie(variabele)', 10);

Dit werkt dus helaas niet, maar misschien is er een andere manier. Normaal zou ik het met een globale variabele doen, maar dat kan in dit geval niet.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Op vrijdag 19 april 2002 11:36 schreef Graveheart het volgende:
Is er een mogelijkheid om een variabele mee te geven aan een functie in setTimeout?
code:
1
2
3
4
5
6
timer = setTimeout('functie(' + var + ')', 10);

of

blaat = var;
timer = setTimeout('functie(blaat)', 10);

/edit
var is een gereserveerd keyword overigens.. niet slim om je variabelen zo te noemen :)

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Oh, zo noem ik mijn variabele niet, het ging alleen om het voorbeeld :)

Maar het voorbeeld van jou werkt niet. Zo zou ik het graag willen, maar hij geeft op die manier een fout :(

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 10:03

RM-rf

1 2 3 4 5 7 6 8 9

Op vrijdag 19 april 2002 11:39 schreef Pelle het volgende:
code:
1
timer = setTimeout('functie(' + variable + ')', 10);
ik denk dat pelle dit bedoelt:
code:
1
timer = setTimeout('functie(\'' + variable + '\')', 10);

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ook dit werkt niet :(

Misschien is het nodig om er bij te zetten dat de variabele een object bevat.

Als ik gewoon de naam van het object mee geef doet hij het wel :?
code:
1
timer = setTimeout('functie("naam")', 10)

Hoe zet ik een object om naar tekst. Andersom doe ik het altijd met eval() (is geloof ik nog een andere functie voor).
Als ik hem eerst om zet naar tekst en dan terug, werkt het misschien wel.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

setTimeout vraagt gewoon een string die die zelf evalueert.

dus

setTimeout('functie("naam")',10)

is het zelfde als

var bla = "naam"
setTimeout('functie("' + bla + '")',10)

Let alleen goed op je quote en wat je nodig hebt. Blijkbaar verwacht je functie GEEN object anders had je geen quotes nodig gehad ;)

Verwijderd

Op vrijdag 19 april 2002 11:54 schreef Graveheart het volgende:
Misschien is het nodig om er bij te zetten dat de variabele een object bevat.
code:
1
2
3
4
var mijnGlobalVariable = new mijnObjectDing();
function blaat() {
    setTimeout('doeIetsMet( mijnGlobalVariable )',10);
}

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
code:
1
2
3
4
5
6
7
8
9
10
  function move(layer)
  {
    timer = setTimeout('move("'+layer+'")', 10);
  }

.
.
.

  <div onClick='move(this)'></div>

Dit is kort waar het om gaat. En dit werkt dus niet :'(

Als iemand weet hoe ik dit goed kan krijgen hoor ik het graag :)

  • André
  • Registratie: Maart 2002
  • Laatst online: 09-09 14:17

André

Analytics dude

code:
1
2
3
4
function move(layer)
{
  timer = setTimeout('move("'+layer+'")', 10);
}

Je geeft in de onclick een object mee, en dan probeer je hem in je functie move als tekst te gebruiken. Dat gaat niet werken.

Je kunt this.id in de onclick neerzetten, en dan de div een id geven.

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Op vrijdag 19 april 2002 12:59 schreef Yogho het volgende:
code:
1
2
3
4
function move(layer)
{
  timer = setTimeout('move("'+layer+'")', 10);
}

Je geeft in de onclick een object mee, en dan probeer je hem in je functie move als tekst te gebruiken. Dat gaat niet werken.

Je kunt this.id in de onclick neerzetten, en dan de div een id geven.
Ik moet hem hebben als object.
Het gedeelte "timer = setTimeout('move("'+layer+'")', 10);" is idd niet goed, en ik vraag me af of het wel mogelijk is een object mee te geven.

Maar ik zal het zo lang met this.id doen...
Dit werkt trouwens, maar ik heb toch liever een andere methode :)

Verwijderd

Op vrijdag 19 april 2002 13:03 schreef Graveheart het volgende:

[..]

Ik moet hem hebben als object.
Het gedeelte "timer = setTimeout('move("'+layer+'")', 10);" is idd niet goed, en ik vraag me af of het wel mogelijk is een object mee te geven.

Maar ik zal het zo lang met this.id doen...
Dit werkt trouwens, maar ik heb toch liever een andere methode :)
Quick hack...
code:
1
2
3
4
5
6
var timeOutObjects = new Array();
function move(layer) {
     var n = timeOutObjects.length;
     timeOutObjects[n] = layer;
     timer = setTimeout('move("timeOutObjects['+n+']")', 10);
}

timeOutObjects kan zo heel groot worden...maar dat kun je zelf wel optimizen neem ik aan.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Op vrijdag 19 april 2002 14:14 schreef Blues het volgende:

[..]

Quick hack...
code:
1
2
3
4
5
6
var timeOutObjects = new Array();
function move(layer) {
     var n = timeOutObjects.length;
     timeOutObjects[n] = layer;
     timer = setTimeout('move("timeOutObjects['+n+']")', 10);
}

timeOutObjects kan zo heel groot worden...maar dat kun je zelf wel optimizen neem ik aan.
Maak er dan iets van als:

timeOutObjects[layer.id]=layer;

Dan krijg je geen oneindige verzameling. Moet je wel opletten dat je eigenljik ook de timeout-handles opslaat en ken resetten met clearTimeout.
Pagina: 1