Salut à tous,
j'ai un petit soucis pour passer un object avec la fonction setTimeout().
J'ai essayé :
Mais ca ne marche pas :(.Code:
1
2 setTimeout("mainLoop.call(this)",200);
Avez vous une idée?
Version imprimable
Salut à tous,
j'ai un petit soucis pour passer un object avec la fonction setTimeout().
J'ai essayé :
Mais ca ne marche pas :(.Code:
1
2 setTimeout("mainLoop.call(this)",200);
Avez vous une idée?
Salut,
Dans ce que tu met, this ne correspond à rien... Si le this doit correspondre à un objet, tu met :
Voila ;)Code:
1
2 var idobjet = 'monobjet1'; setTimeout("mainLoop.call(document.getElementById('"+idobjet+"'))",200);
A+
SI dans mon cas this correspond à quelque chose car il est dans une methode qui traite un objet. Si je fait alert(this.name) juste avant j'ai bien le nom de l'objet, mais si je le fait dans la fonction mainLoop il me renvoi un alert vide (et j'ai une erreur javascript this.name undefined.
A mon avis il dois falloir écrir le passage avec le setTimout différement, mais comment? C'est ca la question
Mais... Je ne comprend pas...
Le t'a fonction elle est censée faire quoi après ?
Normalement, tu l'éxecute dans quelles conditions ?
Bah je veut juste envoyer l'objet en cours dans la fonction main loop.
Normalement quand on fait methode.call(); on l'écrit de la manière suivante:
methode.call(objet,"parametre1","parametre2...").
Donc la ma fonction mainLoop ne recoit pas de paramètre mais je dois tout de mê préciser l'object envoyé.
Normalement ca marche, mais la vu la forme bizarre pour le setTimout (de devoir mettre le code à executer entre "") ca ne marche pas :(.
Dans ce cas, essaye :
Code:setTimeout("mainLoop.call("+this+")",200);
Ca ne marche pas il dit que action est pas définit (en rajoutant les "" sinon le setTimout n'est pas valide)
La ca ne marchera pas parceque l'on aura perdu le pointeur this :king::aie:Citation:
La je crain que ça ne le fasse avant...
?Code:
1
2
3
4 function action () { mainLoop.call(this); } setTimeout("action()",200);
Personne d'autres n'a d'idées?
Jsuis bien embêté maintenant moi :yaisse2::yaisse2:
la fonction setTimout est vraiment bizarre. Il n'y a pas une autre facon de l'écrire par hasard?
J'ai toujours eu ce probleme et j'ai jamais trouvé la solution :( donc je ne peux pas te repondre :oops:
???Code:
1
2 var action = this; setTimeout("mainLoop.call(action)",200);
???Code:
1
2 ou encore setTimeout("mainLoop.call()",200, action);
essayons autre chose:
c'est tjrs le pbm avec setTimeout; même si tu définis juste avant une variable pour rendre accessible un paramètre, elle n'aura pas une portée globale; d'où la proposition de passer par le tableau window;Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <script type="text/javascript"> function fun(p){ window["p"]=this; setTimeout("alert(window['p'].param)",1000) } function go(param){ this.param=param; } go.prototype.fun=fun; obj=new go("truc"); obj.fun() </script>
Re salut,
par conter ton troisième cas marche nickel ;).
Merci javatwister :yaisse2: