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 :

[Eval] Problème de boucle for sur des tableaux


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Eval] Problème de boucle for sur des tableaux
    Bonsoir,

    Je me prends la tête sur ce problème depuis 2 jours sans résultats, c'est pourquoi je viens chercher votre aide.

    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
    23
    24
     
    var espaces = new Array("salon","visiter","pratiquer","exposer","presse");
    var salon = new Array("tata","toto","tutu");
    var visiter = new Array("lorem","ipsum","dolor");
    var pratiquer = new Array("1","2","3");
    var presse = new Array("presse1","presse2","presse3");
     
    function Ecrire()
    {
    	str = '<dl>';
    	for(i=0;i<espaces.length;i++)
    	{
    		str += '<dt>'+espaces[i]+'</dt><dd><ul>';
    		tab_espace = eval(espaces[i]);
    		for(j=0;j<tab_espace.length;j++)
    		{
    			str += '<li>'+tab_espace[j]+'</li>';
    		}
    		str += '</ul></dd>';
    	}
    	str += '</dl>';
    	//alert(str);
    	document.write(str);
    }
    Je ne sors pas de la seconde boucle for ... a priori le problème viens de la fonction eval qui malgré le fait qu'elle me renvoi bien ce que je veux dans les tableaux plante la boucle ...
    Quelqu'un pourrait-il m'expliquer pourquoi ? éventuellement y a t il une autre façon d'atteindre des éléments d'un tableau imbriqué à partir d'une chaine de caractère ayant le meme nom que la variable du tableau à atteindre ?

    Merci d'avance.
    [b_b]

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 208
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 208
    Points : 8 435
    Points
    8 435
    Billets dans le blog
    17
    Par défaut
    eval( ), ben je ne pourrai pas te dire pquoi ça bloque, je ne l'ai jamais utilisée.
    Pour ton problème, tu pourrais structurer tes données différemment :

    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
    <script type="text/javascript">
    	var i, j ;
    	var espaces = [ "salon", "visiter", "pratiquer" ] ;
    	var data = [ ] ;
    	data["salon"] = [ "tata", "toto", "tutu" ] ;
    	data["visiter"] = [ "lorem", "ipsum", "dolor" ] ;
    	data["pratiquer"] = [ "1", "2", "3" ] ;
     
    	document.write("<dl>") ;
    	for ( i = 0 ; i < espaces.length ; i++ ) {
    		document.write("<dt>" + espaces[i] + "</dt>") ;
    		document.write("<dd><ul>") ;
    		for ( j = 0 ; j < data[espaces[i]].length ; j++ ) {
    			document.write("<li>" + data[espaces[i]][j] + "</li>") ;
    		}
    		document.write("</ul></dd>") ;
    	}
    	document.write("</dl>") ;
    </script>

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci Seb. ca m'a permis d'envisager une autre solution mais je retombes sur le même bug que précédemment si j'augmente le nombre de niveaux d'imbrication de mes tableaux ...
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    var espaces = new Array("salon","visiter","pratiquer");
    var tab = [ ] ;
    tab["salon"] = [
    					["presentation","presentation.htm","rub_presentation"],
    					["presentation2","presentation2.htm",""]
    				];
    tab["rub-presentation"] = [
    								["truc","truc.htm",""],
    								["truc2","truc2.htm",""],
    								["truc3","truc3.htm",""],
    								["truc4","truc4.htm",""],
    							];
    tab["visiter"] = [
    					["bidule","bidule.htm",""],
    					["bidule2","bidule2.htm",""],
    					["bidule3","bidule3.htm",""],
    					["bidule4","bidule4.htm",""],
    				 ];
    tab["pratiquer"] = [
    						["machin","machin.htm",""],
    						["machin2","machin2.htm",""],
    						["machin3","machin3.htm",""],
    					];
     
    function Ecrire()
    {
    	str = '<dl>';
    	for(i=0;i<espaces.length;i++)
    	{
    		str += '<dt>'+espaces[i]+'</dt>';
    		str += '<dd><ul>';
    		for(j=0;j<tab[espaces[i]].length;j++)
    		{
    			str += '<li>'+tab[espaces[i]][j][1]+'</li>';
    		}
    		str += '</ul></dd>';
    	}
    	str += '</dl>';
    	document.write(str);
    }
    Le but étant comme as du le comprendre au début de créer une structure de menu paramétrable via mes tableaux. Autant de tableaux imbriqués que de niveaux de menu en gros ...
    Avec le code si dessus je replante la boucle avec tab[espaces[i]][j][1] en essayant d'atteindre les noms de chacune des pages de chacun des espaces (tab[espaces[i]]) de mon menu.

    [b_b]

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    je me répond a moi même ... faut que j'ailles dormir !
    il y avait des virgules qui trainaient en fin de tab[espace[i]] ... du coup il finissait pas ma boucle ...

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

Discussions similaires

  1. [CS3] Faire une boucle for sur des champs texte
    Par Bubuk dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 18/12/2013, 17h06
  2. Boucle for sur des Slides
    Par nsr88 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 07/11/2013, 14h36
  3. Syntaxe pour une boucle for sur des combobox
    Par Tifriis dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/10/2010, 13h52
  4. [XL-2007] Créer une boucle pour copie des tableaux de plusieurs feuilles sur une seule
    Par rvtoulon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/09/2009, 17h12
  5. [BASH] boucle for sur des fichiers, recuperation du chemin ?
    Par zevince dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 13/11/2007, 10h47

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