0Philooz0
Messages postés5Date d'inscriptionmercredi 20 décembre 2000StatutMembreDernière intervention 1 septembre 2008
-
31 août 2008 à 14:34
0Philooz0
Messages postés5Date d'inscriptionmercredi 20 décembre 2000StatutMembreDernière intervention 1 septembre 2008
-
1 sept. 2008 à 08:50
Bonjour,
J'ai un problème ( depuis maintenant deux jours ) avec le bout de code suivant:
///Portion de code qui pose problème.
function MaClasse(){
this.Local=this;
this.Mamethodeaproblemes = function(objet,j){
var i;
for(i=0,i<j,i++){
setTimeout(function(){
this.Local.Uneautremethode(objet,i);
},i*100);
}
}
this.Uneautremethode=function(objet,valeur){
//Fait des trucs sur objet.
objet.propriete=valeur;
}
}
//Nouvel objet.
var unobjet=new Object;
var monobjet=new MaClasse();
monobjet.Mamethodeaproblemes(unobjet,50);
////
Je m'explique. Ce code doit appeler une fonction avec setTimeout (afin d'affecter à objet.propriete les valeurs successives (de 0 à j).
Le problème, c'est que la valeur de i envoyée sur monobjet.Uneautremethode(unobjet,i); est toujours la même...
S'il vous plaît... Aidez-moi! Je deviens ...
bizibiz17
Messages postés142Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention29 août 20091 31 août 2008 à 19:28
A priori la valeur de i doit être ici passée par référence = un pointeur, du coup lorsque tu essaies de lire sa valeur, tu lis la valeur que i possède à cet instant donc a priori la dernière car le code se déroulera plus vite que ton timeOut.
La solution serait donc comme tu disais un passage par valeur mais sur ce point je ne connais pas la solution, je ne sais même pas si c'est possible...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 1 sept. 2008 à 06:06
bonjour,
problème souvent évoqué
mais comme on n'a pas toutes les billes pour appliqué à ton code,
un ch'tiot exemple sur des éléments html :
tu comprendras le principe
0Philooz0
Messages postés5Date d'inscriptionmercredi 20 décembre 2000StatutMembreDernière intervention 1 septembre 2008 31 août 2008 à 19:17
Merci pour votre aide, tonytruand, mais cela ne fonctionne pas.
Apparemment, il semblerait que JS "transmet" la dernière valeur de i obtenue.
Dans mon code, si je mets
///Portion de code qui pose problème.
function MaClasse(){
var Local= this; this.Mamethodeaproblemes = function(objet,j){
var i;
for(i=0,i<j,i++){
setTimeout(function(){
Local. Uneautremethode(objet,i);
alert(i); },i*100);
}
}
this.Uneautremethode =function(objet,valeur){
//Fait des trucs sur objet.
objet.propriete=valeur;
}
}
//Nouvel objet.
var unobjet=new Object;
var monobjet=new MaClasse();
monobjet.Mamethodeaproblemes(unobjet,5);
////
J'ai le bon nombre d'appels (5), j'ai le bon timing, mais j'ai 5 fois la valeur 5...
Je me torture avec des eval() et autres, mais impossible de récupérer cette fichue valeur de i!
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 1 sept. 2008 à 07:43
ch'tiote erreur : j'ai mis onclick sur l'un et onmouseover sur l'autre,
"bien entendu" c'est pour le même evênement.
CordialementBul[mon Site][M'écrire], <!--