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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    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 Expert 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 : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

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

    setTimeOut => setTimeout

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    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 Expert 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 : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    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
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    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 Expert 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 : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    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();">
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, 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
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Expert confirmé
    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 : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    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);
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ 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