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

Bibliothèques & Frameworks Discussion :

Boucle d'attente entre deux domready


Sujet :

Bibliothèques & Frameworks

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Boucle d'attente entre deux domready
    Bonjour à tous

    J'ai bien entendu un probleme, pour venir vous Questionner!...
    Voila
    dans un evenement "domready" j'enchaine successivement 2 functions.
    La premiere cree des composants dom (des selects )
    La deuxieme les rempli. sauf que au remplissage, j'ai des erreurs, que les composants n'exitent pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function fait_premier_truc() {
      sel = document.createElement('SELECT');
      sel.type = 'select-multiple';
      sel.id = 'monselect';
      document.body.appendChild(sel);
    }
    function fait_deuxieme() {
      opt = document.createElement('OPTION');
      opt.value = 2;
      opt.text = 'deux';
      $('monselect').appendChild(opt);
    }
    window.addEvent('domready', function() {Fait_premier_truc();});
    window.addEvent('domready', function() {Fait_deuxieme();});
    Je voudrais faire un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var drapeau = 0;
    function fait_premier_truc() {
      ..
      drapeau = 1;
    }
    window.addEvent('domready', function() {Fait_premier_truc();});
    window.addEvent('domready', function() {
      //attendre tant que drapeau == 0
     //sinon  Fait_deuxieme();
    });
    J'ai vu qu'il y avait une function attempt et une function delay
    mais je ne vois pas trop comment s'en servir..
    Merci de votre aide

    NB: J'ai 2 lignes séparées window.addEvent('domready',...
    car la première est dans un fichier .js séparé.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Tout d'abord, soyez sûr de donner des id uniques à vos <select>.

    Citation Envoyé par mjeandon Voir le message
    NB: J'ai 2 lignes séparées window.addEvent('domready',...
    car la première est dans un fichier .js séparé.
    Ensuite, est-il possible que le remplissage soit appelé avant la création à cause de cette séparation en plusieurs fichiers ? Il faut peut-être réorganiser votre code.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    En fait j'ai trouvé la raison, ca n'est pas du au domready...
    Et j'ai donc un probleme de boucle d'attente;

    Dans mon script, j'ai un object qui charge dynamiquement un script .js et tant que ce fichier n'est pas chargé, j'ai une erreur si je veux m'en servir. (normal!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function UnObject(path) {
    	if (window.existFunction) {}  //une function qui est dans le fichier lib_.js
    	else {
    		var head = document.getElementsByTagName('head').item(0);		
    		var script = document.createElement('script');
    		script.type = 'text/javascript';
    		script.src = path+'lib_.js';
    		script.defer = true;
    		head.appendChild(script);	
    	}
            this.init = function() {
                // là il faudrait une boucle d'attente tant que lib_.js n'est pas chargé complètement
                ...//remplissage des composants crees avec le script 
            }
    }
     
    var theObj;
    window.addEvent('domready', function () { 
             theObj = new UnObject('public/js/');
             theObj.init();
    } );

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    dans un evenement "domready" j'enchaine successivement 2 functions.
    La premiere cree des composants dom (des selects )
    La deuxieme les rempli. sauf que au remplissage, j'ai des erreurs, que les composants n'exitent pas..
    je ne vois pas bien l’intérêt de cette méthodologie, pourquoi ne pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function fait_premier_truc() {
      var opt, sel; // c'est une bonne pratique que déclarer les variables avec le mot clé var
      sel = document.createElement('SELECT');
      sel.type = 'select-multiple';
      sel.id = 'monselect';
      document.body.appendChild(sel);
    /*
    }
    function fait_deuxieme() {
    */
      opt = document.createElement('OPTION');
      opt.value = 2;
      opt.text = 'deux';
    //  $('monselect').appendChild(opt);
      sel.appendChild(opt); // utilisation directe de la référence à l'objet crée
    }
    les deux fonctions étant plus qu'intimement liées cela devrait être très suffisant

    ou alors au pire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    window.addEvent('domready', function() {
        Fait_premier_truc();
        Fait_deuxieme();
      });

Discussions similaires

  1. [XL-2013] Boucle (Copier/Coller) entre deux classeurs
    Par SalomeRegie dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/05/2017, 14h00
  2. Délai d'attente entre deux fonctions
    Par Invité dans le forum jQuery
    Réponses: 2
    Dernier message: 26/05/2009, 11h56
  3. délais d'attente entre deux commandes
    Par vince2005 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/02/2008, 02h06
  4. [MySQL] gestion d'affichage entre deux boucle while mysql_fetch_array()
    Par tkwleboss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/11/2007, 21h37
  5. Macro s'arretant entre deux boucles
    Par jackbauer972 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/08/2007, 13h54

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