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 :

Bouton DOM dans un tableau


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Points : 21
    Points
    21
    Par défaut Bouton DOM dans un tableau
    Salut, j'ai un petit problème :

    Je fais un bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var bouton_modifier = document.createElement('input');
    bouton_modifier.type = "button";
    bouton_modifier.id = "bouton_modifier";
    bouton_modifier.name = "bouton_modifier";
    Je voudrais mettre ce bouton dans une cellule de tableau généré dynamiquement, donc je fais ça :
    mon tableau dynamique qui récupère des valeurs dans une base via un fichier php qui génère du xml

    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
     
    for (var i=0; i<item.length; i++)
    {
    	... // lignes pas importantes où figure la création du bouton modifier
    	tableau += "<tr bgcolor='#e0e0e0'>"
    	tableau += "<td>"+user_id+"</td>";
    	tableau += "<td>"+login+"</td>";
    	tableau += "<td>"+mail+"</td>";
    	tableau += "<td>"+date_creation+"</td>";
    	tableau += "<td>"+nom+"</td>";
    	tableau += "<td>"+prenom+"</td>";
    	tableau += "<td>"+adresse+"</td>";
    	tableau += "<td>"+code_postal+"</td>";
    	tableau += "<td>"+ville+"</td>";
    	tableau += "<td>"+telephone+"</td>";
    	tableau += "<td>"+mobile+"</td>";
    	tableau += "<td>"+entreprise+"</td>";
    	tableau += "<td>"+multi_instance+"</td>";
    	tableau += "<td>"+etat+"</td>";
    	tableau += "<td>"+bouton_modifier+"</td>";//ligne importante
    	tableau += "</tr>"
    }
    Le soucis c'est que tout s'affiche correctement à part le bouton, à la place du bouton j'ai un joli message [object HTMLInputElement]. Comment faire pour afficher le bouton à la place du message.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Ne mélange pas la création d'un élément avec DOM et innerHTML.
    innerHTML attend de string mais avec DOM, tu dois faire un appendChild dans l'objet parent.

    A+.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    En fait, il faudrait que je fasse du html pur ce que j'ai essayé de faire au départ mais je ne peux pas utiliser this pour pouvoir personnaliser/individualiser mes boutons dynamiques. J'avais fait une structure de tableau tout en DOM mais je trouve ça casse bec et vachement fastidieux pour au final pas grand chose.

    Aurais-tu une solution pour pouvoir récupérer la valeur de l'id d'un bouton généré dynamiquement :

    si je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau += "<td>"+bouton_modifier+"</td>";
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau += "<td><input id=user_id type='button' onclick='modifier_utilisateur();' value='M'></td>";

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Alors, je suis encore sur ce problème, et j'ai eu une idée mais malheureusement, c'est pas encore ça. Pour utiliser des boutons dom avec lesquels je pourrais utiliser this pour les idividualiser je vais mettre une div dans la cellule en question avec un id et utiliser appendChild pour placer mes boutons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tableau += "<td><div id='bt_ms'></div></td>";
    var place_bt_utilisateur = document.getElementById('bt_ms');
    place_bt_utilisateur.appendChild(bouton_modifier_utilisateur);
    tableau += "</tr>";
    et ça me fait le fabuleux message : Cannot call method 'appendChild' of null
    WHY ?

    Merci d'avance.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Parce que l'élément n'existe pas encore dans le DOM mais seulement en format de String de la variable tableau. Soit tu ajoutes d'abord ton tableau en faisant le innerHTML et c'est après que tu faits l'appendChild, soit tu utilises un innerHTML pour tous, soit tu utilises DOM pour tous.

    Dans ton précédent post, si tu veux récupérer l'id du bouton pour utiliser dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau += "<td><input id='user_id' type='button' onclick='modifier_utilisateur(this.id);' value='M'></td>";
    Mais attention, un id doit être unique dans un document.

    A+.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Je n'ai pas réussi à manipuler le this.id dans la fonction quand je fais une alert(pour tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function modifier_utilisateur()
    {
          toto = this.id;
          alert(toto);
    }
    on me répond : undefined

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Regarde bien la valeur du paramètre dans le code que j'ai filé.

    A+.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    La valeur du paramètre est this.id et donc ...

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick='modifier_utilisateur(this.id);'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function modifier_utilisateur(id)
    {
          alert(id);
    }

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Merci nickel, je dois clairement révisé mon Javascript.

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    tu peux utiliser http://www.developpez.net/forums/d83...ace-innerhtml/

    Code javascript : 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
    var table = document.Table();
    for (var i=0; i<item.length; i++)
    {
        ... // lignes pas importantes où figure la création du bouton modifier
        table.Tr({bgcolor: '#e0e0e0'})
            .Td()
              .Button({
                id: 'bouton_modifier',
                onclick: function() {
                  alert('click sur le bouton');
                }
              })                             .parentNode
                                             .parentNode
    	.InlineTag ('td', user_id)       .parentNode
    	.InlineTag ('td', login)         .parentNode
    	.InlineTag ('td', mail)          .parentNode
    	.InlineTag ('td', date_creation) .parentNode
    	.InlineTag ('td', nom)           .parentNode
    	.InlineTag ('td', prenom)        .parentNode
    	.InlineTag ('td', adresse)       .parentNode
    	.InlineTag ('td', code_postal)   .parentNode
    	.InlineTag ('td', ville)         .parentNode
    	.InlineTag ('td', telephone)     .parentNode
    	.InlineTag ('td', mobile)        .parentNode
    	.InlineTag ('td', entreprise)    .parentNode
    	.InlineTag ('td', multi_instance).parentNode
    	.InlineTag ('td', etat)          .parentNode
    	.InlineTag ('td', bouton_modifier)
    }

    A+JYT

Discussions similaires

  1. Réglage interface pour bouton supprimer dans un tableau
    Par Popa_Cubede dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 15/07/2014, 09h18
  2. Boutons submit dans un tableau
    Par poustiquette dans le forum Langage
    Réponses: 10
    Dernier message: 04/05/2010, 10h42
  3. [WD12E] Boutons déplacements dans un tableau
    Par Hell dans le forum WinDev
    Réponses: 5
    Dernier message: 20/12/2008, 23h18
  4. Réponses: 6
    Dernier message: 07/11/2008, 10h26
  5. [SQL] Affichage résultat requête dans un tableau, bouton affichage page
    Par megapacman dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 18/05/2006, 16h42

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