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 :

Boucle while tant que variable existe


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Par défaut Boucle while tant que variable existe
    Bonjour à tous,

    Je souhaiterais arriver à faire une boucle while (ou autre si vous avez une solution) en testant si la variable existe.
    En fait en fonction de la page ou je suis j'ai un certain nombre de variable qui est défini : variable1, variable2,.. variable n
    Le nombre n varie en fonction de mes pages.
    Voici mon code, seul hic quand il arrive à un nom de variable qui n'est pas défini au lieu d'arrêter la boucle j'ai une erreur: "variableX is undefined"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var i=1;
    while (  eval("variable"+i) != "undefined") {
    pl.push({ 
     
    	   prenom: eval("prenom"+i),
    	   nom: eval("nom"+i),
    	   age: eval("age"+i)});
    	   i++;}
     
    	return pl;}});

    Voyez vous un moyen de réaliser cela svp?

    Merci beaucoup par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    cela va principalement dépendre du scope des variables dans la page ..
    si elle sont globales (rattachées au window) on peu faire un test in ...

    http://jsfiddle.net/spNUt/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    je ne comprends pas l'utilisation de variables comme variable1 variable2 etc.
    c'est compliqué et ça ne sert à rien.

    Il suffit d'utiliser des tableaux variables[i].
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var i=1;
    while (  typeof variables[i] !== "undefined") {
      pl.push({ 
        prenom: prenom[i],
        nom: nom[i],
        age: age[i]
      });
      i++;
    }
     
    return pl;
    un jour il faudra que quelqu'un me montre un cas où utiliser un tableau n'est pas possible.
    A+JYT

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur avant-vente
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur avant-vente
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Par défaut
    Merci pour votre aide.
    En effet l'utilisation d'un tableau serait plus facile mais le fait est que le sujet sur lequel je travaille possède déjà ces variables créé. Or je ne peux pas les modifier et il faut que je les utilise ainsi.
    Une autre solution serait de créer un tableau et de le remplir avec ces variables pour aprés pouvoir les manipuler plus facilement. Seulement je ne vois pas comment faire cela sans devoir passer par une boucle why afin de determiner la dernière variable défini...

  5. #5
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Plutôt que d'utiliser eval, il vaut mieux récupérer directement la variable depuis le scope auquel elle appartient. Si ces variables sont globales, tu les trouveras dans window. Ainsi, tu peux refaire ta boucle comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var i=1;
    while (  ("variable"+i) in window) {
    pl.push({  
    	   prenom: window["prenom"+i],
    	   nom: window["nom"+i],
    	   age: window["age"+i]
    	   });
    i++;
    }
    Bien sûr, le plus propre reste de refactorer pour stocker ces variables directement dans un tableau, et encore mieux dans un scope réservé à cet effet. Tester des variables au nom dynamique dans le scope global est très risqué, ça ouvre la porte aux conflits en tout genre et aux résultats différents selon les browsers.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ce qui correspond à la solution proposée plus haut ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

Discussions similaires

  1. [OPTIMISATION] Date en tant que variable dans les clauses WHERE
    Par dens19 dans le forum Développement
    Réponses: 11
    Dernier message: 18/09/2009, 08h57
  2. [AC-2000] Déclarer une procédure en tant que variable dans une procédure globale
    Par kir4000 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/08/2009, 16h52
  3. Boucle While et les variables
    Par joboy84 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2008, 13h16
  4. %Path% en tant que variable User
    Par _dack_ dans le forum Windows XP
    Réponses: 1
    Dernier message: 05/02/2008, 21h05
  5. Réponses: 2
    Dernier message: 06/12/2007, 19h47

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