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 :

convertir un élément d'un array en string


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut convertir un élément d'un array en string
    Bonjour,

    Je sais que ma question est vraiment basique, mais je n'ai pas trouvé comment faire...

    j'ai un array passé en paramètre d'une fonction js. Cet array contient des string. Je voudrais parcourir cet array pour ajouter ces éléments à un élément select. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var elOption = new Array();
    for(i=0 ; i<eltsListe.length ; i++){
    	var option = eltsListe[i];
    	elOption.push(new Option(option.toString(), option.toString(), false, false));
    }
    à 'affichage j'ai parfois un undefined parfois sa plante.. ça dépend de la méthode. Avec celle là j'ai rien.

    Vous pouvez m'aider svp?

    Merci

  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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    eltsListe c'est l'array passé en paramètre ?

    eltsListe[i] contient quoi ?

    HA !!!

    tu veux dire ajouter des options à un select à parir d'un array ??
    C'est pas dans la FAQ ni les Contributions ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.createElement('option')
    ...

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut
    J'ai regardé sur un tuto de developpez pour faire mon code.
    il s'agit de ce tuto : http://javascript.developpez.com/tut...=page_5#LV-A-1

    J'y ai notamment trouvé ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    //Tableau contenant les options de la liste
    var elOption = new Array(
                        new Option("Votre choix", "", false, false),
                        new Option("Option 1", "valeur1", false, false),
                        new Option("Option 2", "valeur2", false, false),
                        new Option("Option 3", "valeur3", false, false),
                        new Option("Option 4", "valeur4", false, false)
                              );
    ce que j'ai essayé de faire c'est de récupérer les valeurs d'un tableau au lieu de mettre option 1, option2...
    Mon tableau est construit comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php include("ajouterChampRequete.php"); 
                            $liste = array("jour","semaine","mois");
                    echo ajouterChampRequete(1,$liste,"form1","valider");
                    ?>
    ajouterChamprequete me permet de faire plusieurs choses comme afficher un input texte, un select et un bouon qui ajoutera d'autres input.

    Voici le bout de code du bouton
    (qui se trouve donc dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function ajouterChampRequete($nbChampTexte, $eltsListe,$idParent,$idEnfant){
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Ajout du bouton
    	$retour .= "<label>";
    	$retour .= '<input type="button" onclick="addinput('.$eltsListe.')"name="button" id="add" value="+" />';
    	$retour .= '<div id="moreinputs">';
    	$retour .= '</div>';
    	$retour .= "</label>";
    Mais je suis coincé. Je pense avoir fait pareil que dans le tuto pour la création des options, donc je crois que c'est la lecture de eltsListe[i] qui ne va pas...

    Tu en penses quoi?

  4. #4
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Pourquoi vouloir repasser en string ??
    (Maintenant la façon dont tu gères tes taches ménagères ne me regarde pas ^^)

    soit tu passes du string dans les elements de l'array:


    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
     
    <script type="text/javascript">
    var elOption = new Array(
                        ["Votre choix", "", false, false],
                        ["Option 1", "valeur1", false, false],
                        ["Option 2", "valeur2", false, false],
    					   ["Option 2", "valeur2", false, false],
                        ["Option 2", "valeur2", false, false]
                        );
    alert(elOption[0][3])
     
    function foo(){
    var i=0;
    var elL=elOption.length
    for(i=0;i<elL;i++){
     var newOpt=new Option(elOption[i][0],elOption[i][1],elOption[i][2],elOption[i][3])
     document.getElementById('monselect').options[document.getElementById('monselect').options.length]=newOpt;
     }
     }
    </script>
    </head>
     
    <body onload="foo()">
    <select id="monselect">
    </select>
    </body>
    soit tu conserves les objets :
    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
    var elOption = new Array ( new Option("Votre choix", "", false, false),
    				  new Option("Option 1", "valeur1", false, false),
    				  new Option("Option 2", "valeur2", false, false),
    				  new Option("Option 3", "valeur3", false, false),
    				  new Option("Option 4", "valeur4", false, false)
                        );
     
     
    function foo(){
    var i=0;
    var elL=elOption.length
    for(i=0;i<elL;i++){
    var newOpt=new Option(elOption[i][0],elOption[i][1],elOption[i][2],elOption[i][3])
     document.getElementById('monselect').options[document.getElementById('monselect').options.length]=elOption[i];
     }
     }

  5. #5
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $liste = array("jour","semaine","mois");
    echo ajouterChampRequete(1,$liste,"form1","valider");
    Et tu crois vraiment qu'en faisant un echo d'une variable PHP, ça va te transformer un tableau PHP en tableau JavaScript ???
    Ca revient au même que de vouloir créer un PDF en changeant juste l'extension d'un fichier texte...
    http://javascript.developpez.com/faq...aux#arrayPHPJS

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut
    J'ai l'impression qu'on ne parle pas de la même chose.
    Au risque d'être lourd, je vais mettre mon code en entier, en vous expliquant au mieux...

    Je me permet de faire ça, car le code que j'ai est fonctionnel, la seule chose qui va pas c'est qu'il met des undefined dans le select...

    J'ai une page php dans laquelle je construit une zone de requete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div id="eltRequete">
       	 	<?php include("ajouterChampRequete.php"); 
                            $liste = array("jour","semaine","mois");
                    echo ajouterChampRequete(1,$liste,"form1","valider");
                    ?>
        </div>

    La fonction ajouterChampRequete me permet de construire un string définissant la strucure d'une ligne de requete, à savoir, un input texte, un select et un bouton.
    Voici tout le code de ajouterChampRequete .php
    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
     
    <?php
    function ajouterChampRequete($nbChampTexte, $eltsListe,$idParent,$idEnfant){
            $retour = '<span id="inputline">';
        
        //Ajout des champs texte
            for($i=0 ; $i<$nbChampTexte ; $i++){
                    $retour .= '<label>';
                    $retour .= "<input type="."text"." name="."textfield"." id="."textfield".$i." />";
                    $retour .= '</label>';
                    $retour .= '    ';
            }
            
        
        //Ajout de la liste
            $retour .= "<label>";
            $retour .= '<select name="select" id="select" size="1">';
            for($i=0 ; $i<count($eltsListe) ; $i++){
                    $retour .= "<option value=".$eltsListe[$i].">".$eltsListe[$i]."</option>";
            }
            $retour .= '</select>';
            $retour .= "</label>";
            
        
        //Ajout du bouton
            $retour .= "<label>";
            $retour .= '<input type="button" onclick="addinput('.$eltsListe.')"name="button" id="add" value="+" />';
            $retour .= '<div id="moreinputs">';
            $retour .= '</div>';
            $retour .= "</label>";
            $retour .= "</span>";
            
            return $retour;
    }
    ?>
    Comme j'ai eu la bonne idée de charger le script contenant la méthode addinput(Array) dans ma première page php, le bouton que je vieens de créer, peut effectivement lancer le script.

    Voici le script :

    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
    41
    42
    43
     
    function addinput(eltsListe){
     
    var elInput = new Array();
     
    for (i=0;i<2;i++)
    {
    	elInput[i] = document.createElement("input");
    	elInput[i].type = "text";
    }
     
     
    //création de l'élément select
    var elSelect = document.createElement("select");	
    elSelect.size = "1";	
     
     
    //Tableau contenant les options de la liste
    var elOption = new Array();
    for(i=0 ; i<eltsListe.length ; i++){
    	var option = eltsListe[i];
    	elOption.push(new Option(option, option, false, false));
    }
     
    //Appel des objets formulaire et bouton
    var elForm = document.getElementById("form1");
    var objBouton = document.getElementById("valider");
     
    elForm.insertBefore(elInput[0], objBouton);	//1er INPUT
     
    elForm.insertBefore(elSelect, objBouton);	//Ajout du select
     
    //Ajout dans le select des options (1)
    for (i=0;i<elOption.length;i++)			
    {
        elSelect.options.add(elOption[i]);
    }
     
    elForm.insertBefore(elInput[1], objBouton);	//2ème INPUT
     
    //Saut de ligne 1
    elForm.insertBefore(document.createElement("br"), objBouton);	
    }
    Alors?Je suis complétement à côté?
    Merci

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 162
    Points : 209
    Points
    209
    Par défaut
    Je rejoins Bovino par rapport au fait que tu ne peux pas transformer une variable PHP en Javascript avec un simple echo...

    Si tu regardes d'ailleurs le code HTML généré, tes boutons, le onclick doit ressembler à un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="addinput('Array')"
    Tu ne peux pas passer un "objet" PHP à un objet javascript "simplement"...

    A+

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut
    c'est effectivement ce que j'obtiens...
    j'avais pas compris ce que Bovino voulait dire...

    Désolé.

    Je vais travailler la dessus et je vous tiens au courant
    Merci

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut
    j'ai réussit à obtenir cela dans mon code html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="addinput(jour_semaine_mois)"
    Je pensais que c'était tout bon, car du coup je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function addinput(listeAvec_){
    var eltsListe = listeAvec_.split('_');
    Mais ça ne marche pas une idée?

  10. #10
    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
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il te manque des quotes, voici ce que tu devrais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="addinput('jour_semaine_mois')"

  11. #11
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut
    effectivement ça marche mieux comme ça

    Mais j'ai encore un problème...
    Tous les mots de mon array se mettent à la suite dans la même option...
    Donc au lieu d'avoir trois options, j'en ai 1.


    Voici le bout de code correspondant.
    C'est promis ensuite je vous laisse tranquille!!
    En tout cas un grand merci pour toute 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
     
     
    //Tableau contenant les options de la liste
    var elOption = new Array();
    for(i=0 ; i<eltsListe.length ; i++){
    	var option = eltsListe[i];
    	elOption.push(new Option(option, option, false, false));
    }
     
    //Appel des objets formulaire et bouton
    var elForm = document.getElementById("form1");
    var objBouton = document.getElementById("valider");
     
    elForm.insertBefore(elInput[0], objBouton);	//1er INPUT
     
    elForm.insertBefore(elSelect, objBouton);	//Ajout du select
     
    //Ajout dans le select des options (1)
    for (i=0;i<elOption.length;i++)			
    {
        elSelect.options.add(elOption[i]);
    }

  12. #12
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    la reponse a été donnée plus haut ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      elSelect.options[  elSelect.options.length]=elOption[i];

  13. #13
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 98
    Points
    98
    Par défaut
    Merci!!!!

    Mes questions n'étaient pas ouf, mais j'étais complétement dans les choux, donc votre aide était super!!

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

Discussions similaires

  1. Convertir un cell array en string
    Par Sensib dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/11/2006, 13h12
  2. comment convertir un fichier xml en tableau de string (java)
    Par l'indien dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/02/2006, 21h00
  3. [FreePascal] Array of string
    Par w0lf dans le forum Free Pascal
    Réponses: 3
    Dernier message: 21/01/2006, 18h46
  4. [gtkmm] Convertir un ustring vers un array
    Par alejandro dans le forum GTK+
    Réponses: 2
    Dernier message: 17/05/2005, 13h43
  5. TStringList en array of string
    Par JediKerian dans le forum Langage
    Réponses: 2
    Dernier message: 20/03/2003, 15h37

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