IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ma fonction ne se lance plus avec le setTimeOut ?


Sujet :

JavaScript

  1. #1
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    javascript est sensible à la case :

    setTimeOut => setTimeout

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    bonjour,

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Je rajouterai même, vu que la fonction "go_comptes" ne prend pas de paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function charger_compte_credit()
    {
      setTimeout(go_comptes, 3000);
      go_credit_reporte();
    }

  5. #5
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par Auteur Voir le message
    bonjour,

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  6. #6
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    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".

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <select onchange="fonction1();fonction2();">

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    euh... Y a un léger problème aussi : setTimeout prend en paramètre un fonction... càd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout(go_comptes,3000); //sans les parenthèses après go_comptes

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    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).

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    ah

    Je savais pas ^^ désolé

  11. #11
    Débutant
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Points : 106
    Points
    106
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <select onchange="fonction1();fonction2();">
    Tout à fait l'appel successif sur le même événement marche.
    Je me la compliquais sans raison.

    Merci beaucoup.

  12. #12
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimout(function() { maFonction(arg1, arg2, …); }, 3000);

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une fonction ne va plus avec IE 7
    Par renaud26 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2007, 08h56
  2. Réponses: 6
    Dernier message: 09/03/2006, 13h35
  3. [TOMCAT][ECLIPSE] Tomcat ne se lance plus
    Par elias dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 06/01/2006, 18h19
  4. Tâche qui ne se lance pas avec cron
    Par bugalood dans le forum Administration système
    Réponses: 3
    Dernier message: 17/10/2005, 18h13
  5. [Tomcat] Tomcat ne se lance plus et lance Debug
    Par zev dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/01/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo