Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/08/2011, 15h16   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Par défaut Ma fonction ne se lance plus avec le setTimeOut ?

Bonjour,

Je dois lancer deux fonctions au même moment à la suite d'un changement sur une liste déroulante.
J'ai vu que je pouvais utiliser setTimeOut() avec un délai faible pour résoudre le problème.

Cependant, avec le setTimeOut, aucune fonction ne se lance:

Voici mon code :

Code :
1
2
3
<td> <select name="Num_compte" id="Num_compte" onchange="charger_compte_credit();">
<option value="-1">Aucun</option>
</select></td>
Mes deux fonctions sont go_credit_reporte() et go_comptes().


Code :
1
2
3
4
5
function charger_compte_credit()
{
setTimeOut('go_comptes()', 3000);
go_credit_reporte();
}
mais aucune des deux ne se lance.
Bien que j'ai bien sur testé chacune deux deux qui marche séparément parfaitement.

Quel est le problème à ce niveau ?

merci de vos solutions ?

Cordialement.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 15h33   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 868
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 868
Points : 1 375
Points : 1 375
javascript est sensible à la case :

setTimeOut => setTimeout
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 15h38   #3
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 795
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 795
Points : 5 119
Points : 5 119
bonjour,

Code javascript :
1
2
3
4
5
6
 
function charger_compte_credit()
{
setTimeout('go_comptes()', 3000);
go_credit_reporte();
}

tu as sans doute tes raisons pour ajouter un timer aussi long (3s) sur une de tes fonctions.
Je voudrais quand même que tu fasses attention car si ces deux fonctions utilisent des variables globales au même moment tu pourras avoir des déconvenues.
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 15h51   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 868
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 868
Points : 1 375
Points : 1 375
Je rajouterai même, vu que la fonction "go_comptes" ne prend pas de paramètre :
Code :
1
2
3
4
5
function charger_compte_credit()
{
  setTimeout(go_comptes, 3000);
  go_credit_reporte();
}
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 16h11   #5
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Citation:
Envoyé par Auteur Voir le message
bonjour,

Code javascript :
1
2
3
4
5
6
 
function charger_compte_credit()
{
setTimeout('go_comptes()', 3000);
go_credit_reporte();
}

tu as sans doute tes raisons pour ajouter un timer aussi long (3s) sur une de tes fonctions.
Je voudrais quand même que tu fasses attention car si ces deux fonctions utilisent des variables globales au même moment tu pourras avoir des déconvenues.

Non, j'ai mais le délai seulement comme ça, mais le plus faible m'arrangera. Y'a t-il un délai au maximum faible ?

C'est peut être la cause que ma deuxième fonction "go_credit_reporte()" ne s’exécute pas.

En effet dans les deux fonction, j'utilise des mêmes champs de formulaire pour les envoyer via Ajax.

Cela devrait-t-il empêcher que seul le premier s’exécute ?
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 18h51   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 868
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 868
Points : 1 375
Points : 1 375
Citation:
Envoyé par madina Voir le message
Y'a t-il un délai au maximum faible ?
Là, j'ai bien envie de sortir mon gros "LoL".

"Maximum" possède un super antonyme qui est "Minimum".

Et pour répondre à ta question, le délai minimum que tu peux passer à setTimeout est 0 seconde mais dans ce cas il n'y a plus d'intérêt d'utiliser setTimeout si ce n'est que de sortir du contexte courant pour arriver dans un contexte obscure. Mais dans ce cas "eval" fera la même chose. (à l'execption prêt de qqe bugs sur des vieilles version de firefox qui permettait de faire de l'ajax cross-domain) mais je doute encore que ce soit ton but de coder une fonction pour un vieux navigateur que peu de gens utilise encore !?

Ou alors, je n'ai pas du tout compris ta question, ce qui est encore le plus probable. (je l'espère).

ps: si tu utilises le setTimeout pour ne pas "bloquer" ton exécution de code à cause des requêtes ajax, sache que tu peux utiliser des requêtes ajax dites" asynchrones".
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 08h39   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 793
Points : 35 793
Citation:
Je dois lancer deux fonctions au même moment à la suite d'un changement sur une liste déroulante.
J'ai vu que je pouvais utiliser setTimeOut() avec un délai faible pour résoudre le problème.
Je vois mal le rapport entre setTimeout et le fait de lancer deux fonctions sur un onchange.
Code html :
<select onchange="fonction1();fonction2();">
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h27   #8
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
euh... Y a un léger problème aussi : setTimeout prend en paramètre un fonction... càd :

Code :
setTimeout(go_comptes,3000); //sans les parenthèses après go_comptes
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 10h31   #9
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 793
Points : 35 793
Non, setTimeout peut prendre en paramètre soit une référence à une fonction, soit une chaine de caractères à évaluer (même si cette dernière option est à déconseiller).
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 18h06   #10
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
ah

Je savais pas ^^ désolé
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 04h23   #11
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
Citation:
Envoyé par Bovino Voir le message
Je vois mal le rapport entre setTimeout et le fait de lancer deux fonctions sur un onchange.
Code html :
<select onchange="fonction1();fonction2();">
Tout à fait l'appel successif sur le même événement marche.
Je me la compliquais sans raison.

Merci beaucoup.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 09h59   #12
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Citation:
Envoyé par Willpower Voir le message
Là, j'ai bien envie de sortir mon gros "LoL".
Ok mais pas ici, c'est un forum public

Citation:
Envoyé par Willpower Voir le message
ps: si tu utilises le setTimeout pour ne pas "bloquer" ton exécution de code à cause des requêtes ajax, sache que tu peux utiliser des requêtes ajax dites" asynchrones".
Pléonasme Sinon ça s'appelerait SJAX (et ça n'aurait aucun intérêt parce que c'est imprononçable).

Une remarque en passant à propos de setTimeout avec des arguments : passer une chaîne à setTimeout est aussi dangereux qu'eval. On devrait toujours utiliser une fonction anonyme :
Code :
setTimout(function() { maFonction(arg1, arg2,); }, 3000);
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 10h12   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 793
Points : 35 793
Citation:
Envoyé par Watilin
passer une chaîne à setTimeout est aussi dangereux qu'eval.
Oui, parce qu'en interne, c'est eval qui est exécuté pour interpréter la chaine en question
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h24.


 
 
 
 
Partenaires

Hébergement Web