Problême de setTimeout dans un objet

Résolu
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007
-
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007
-
Salut à tous!
Mon problême est assez simple et ça fait deux jours que je cherche une solution et je n'en ai pas trouvé.
J'ai un objet avec des méthode, et dans une des méthode j'ai une setTimeout et j'aimerais appeler une autre méthode de ce même objet dans le setTimeout.
exemple: setTimeout('this.methode();', 1000);
C'est important que cette méthode se trouve dans l'objet parce que elle a besoin de certaines variables locales à cet objet (this.variable).
Merci d'avance pour vos réponses

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
bonjour,
je verrais bien un truc comme ça ?

<script type= "text/javascript">
function p()
{
 this.p1="exemple";
 quoi=this;
 var timid=setTimeout( function() { quoi.s(quoi.p1); }, 100 );
}
function p.prototype.s(prm)
{
 alert("*"+prm);
}



var f=new p();



</script>







<hr />
cordialement   Bul    Site    =Bul M'écrire
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007

Je vais te le dire très franchement: je ne pensais pas que ça marcherait, et pourtant ça marche!
En fait quand tu déclares quoi, elle est déclarée en variable globale?
Bon malgrès ce petit mystère (je ne suis pas un pro de la poo, j'en ai juste un peu besoin pour un petit projet là) mon problême est résolu donc merci beaucoup (réponse très rapide en plus)!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
si c'est une variable globale, plus de souci !
puisque qu'elle est connue de toutes les fonctions !

<script type= "text/javascript">
var toto="autre exemple";
function p()
{
 this.p1="exemple";
 quoi=this;
 var timid=setTimeout( function() { quoi.s(quoi.p1); }, 100 );
}
function p.prototype.s(prm)
{
 alert("*"+prm+"\r\n"+toto);
}

var f=new p();



</script>



ou alors , je n'ai pas compris la question.




<hr />
cordialement   Bul    
Site
    
=Bul
M'écrire


cliquer sur M'écrire, et vous pourrez donner une adresse
( dans les forums,sites,NG...) où vous joindre sans risque
de spams.  besoin de tests "grandeur nature".
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007

T'inquiête pas je suis un débutant mais je me suis quand même informé avant de faire de la poo (donc je sais ce qu'une variable globale est). C'est ma question qui était mal formulée:
En fait je ne comprend pas pourquoi dans le setTimeout ça marche avec quoi.methode() et pas avec this.methode() puisque quoi=this (donc logiquement j'aurais tendance à penser que quoi.methode() = this.methode(), enfin que ça revient au même)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
en fait, j'ai eu le souci sur une fonction générée en dynamqiue
appelée sur des évênements attachés à plusieurs éléments.

si tu veux voir, regardes SVP (Scroll Vertical Personnalisé )
mis sur ce site,  je crois que là il y a cette utilisation "spéciale"

this de la fonction et this de l'élément ? 
comment distinguer ?
comment le navigateur peut-il ne pas se pommer ?
( on peut faire le parallèle avec l'utilisation ici )

et après beaucoup de recherches, de questions...

ce serait intéressant que des gars un peu plus
costauds que moi ( c'est facile çà, c'est un doux
euphémisme ) nous expliquent en long, en large ,
en travers... car si j'ai un semblant d'explication,
je suis loin de pouvoir répondre à tout, de tout maîtriser !

<hr />
cordialement   Bul    Site    M'écrire
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007

lol... En fait je ne suis pas sur que ce soit utile de tout maitriser... en tout cas pas pour mon petit projet!
Si tu veux vraiment voir comment le navigateur gère ça faudrait voire les sources du moteur de rendu javascript (ou je sais pas comment ça s'appelle), et perso je suis de loin pas assez expérimenté pour analyser un code aussi complexe.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
je viens de relire...

et quoi est déclarée en globale ce qui est inutile et une erreur...

j'avais cru comprendre que tu demandais
"quoi qu'on fait si c'est une variable globale" !
d'où ma réponse ALC (**), je ne sais pas lire...

>>de loin pas assez expérimenté pour analyser
moi non plus !
mais une ch'tite explication me plairait bien.
<hr />
cordialement   Bul    
Site
    
M'écrire


** à la con
Messages postés
48
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
4 avril 2007

ah ça explique tout...
ben en tout cas merci pour ta précieuse aide qui va me permettre de finir mon petit projet