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 :

Recuperer une ligne selectionée et l'ajouter à une autre table


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut Recuperer une ligne selectionée et l'ajouter à une autre table
    Bonjour tout le monde,

    En fait mon problème est que j'ai une table déjà rempli, je voulais faire ça:
    quand je sélectionne(je clik) sur une ligne , je dois récupérer cette ligne(tr) ainsi que les cellules(td) et l'ajouter à une autre table .

    Au début j'ai voulu récupérer la valeur du td mais je n'y arrive pas, je me demande si je pourrais ajouter directement la ligne (tr) à ma nouvelle table, si oui alors s'il vous plait souffle la moi parce que je beau cherché comment faire ça.

    Merci d'avance

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    pour l'ajout, la réponse est dans la FAQ.
    Pour la ligne à supprimer, tu peux soit la masquer (en passant sa propriété CSS "display" à "none"), soit la supprimer vraiment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('table').deleteRow(xxx)
    A+

  3. #3
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    Sinon j'aurais clonner la ligne puis insérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montableau.appendChild(ligneClone);

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Oui, mais l'avantage du inserRow() est qu'il permet de définir une position d'insertion (si besoin, et est-ce le cas ? ). Pour le appendChild(), c'est plus tordu

    A+

  5. #5
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    lol mais non mais non , a la place du appendChild tu remplaces par un bon vieux insertBefore

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    a la place du appendChild tu remplaces par un bon vieux insertBefore
    C'est à ce dernier que je pensais en fait
    Ce que je voulais dire c'est que ça risque d'obliger à parcourir le tableau pour identifier l'élément "avant lequel insérer" la ligne ...
    Mais tout ça n'est que supposition

    A+

  7. #7
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    lol ok ok one point ^^

  8. #8
    Inactif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 63
    Points : 81
    Points
    81
    Par défaut
    http://www.jsfiddle.net/UtT2P/4/
    HTML :
    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
    <table id="entryTable" onclick="tableClick(event)">
        <caption>
            Entry Table
        </caption>
        <thead>
            <tr>
                <th>type</th>
                <th>action</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>chien</td>
                <td>whoua whoua</td>
            </tr>
             <tr>
                <td>chat</td>
                <td>miaou</td>
            </tr>
             <tr>
                <td>canard</td>
                <td>coincoin</td>
            </tr>
        </tbody>
    </table>
     
    <table id="incomingTable">
         <caption>
            Incoming Table
        </caption>
        <tbody>
     
        </tbody>
    </table>
    CSS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    table, td, th {border:1px solid black;}
    td, th {padding:2px;}
    #entryTable, #incomingTable {float:left;width:200px;}
    JS:
    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 tableClick(evt) {
        //recuperation de l'element cliqué
        evt = evt || window.event;
        var target = evt.srcElement || evt.target;
     
        //récupération du bon TR
        while(target.parentNode && target.nodeName!='TR')
            target = target.parentNode;
     
        // si le TR existe et que le parent du TR est un Tbody, on fait quelque chose, sinon rien. cela permet de protéger les TR qui se trouvent dans un Thead et Tfoot.
        if(target.nodeName=='TR' && target.parentNode.nodeName=='TBODY') {
         document.getElementById('incomingTable').tBodies[0].appendChild(target.cloneNode(true));
        }
    }

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut
    Ouai merci ca ca marche bien ,

    mais en fait moi ce que je voulais faire c'est que quand je click sur un bouton ajouter que l'évenement va se declencher.

    donc pour recuper la ligne selectionner , je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <table  onclick="selection(event)">
    et dans la fonction javascript selection(event) je remplace evenementcourant(qui est une variable globale ) par event.

    puis j'ai un bouton Ajouter qui declenche "Ajouter()" dont à l'intérieur j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    evt = evenementcourant || window.event;
        var target = evt.srcElement || evt.target;
     
        //récupération du bon TR
        while(target.parentNode && target.nodeName!='TR')
            target = target.parentNode;
     
        // si le TR existe et que le parent du TR est un Tbody, on fait quelque chose, sinon rien. cela permet de protéger les TR qui se trouvent dans un Thead et Tfoot.
        if(target.nodeName=='TR' && target.parentNode.nodeName=='TBODY') {
         document.getElementById('incomingTable').tBodies[0].appendChild(target.cloneNode(true));
        }

    je vois pas là ou il y a le problème

    merci

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut l'unicité de la ligne
    En fait j'ai pu résoudre mon problème mais le plus grand problème c'est que dans mon second tableau je peux ajouter 2lignes identiques.

    Je cherche un moyen pour vérifier si la ligne qu'on veut ajouter n'existe pas déjà dans le tableau.

    merci

  11. #11
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    quand tu va cloner ta ligne, tu peux l'ajouter dans un tableau , et vérifier si elle n'est pas déjà dedans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var ligneAAjouter = target.cloneNode(true);
    var ajouterLigne = true ;
    for(var i = 0, l = tableauLigne.length ; i < l ; i++){
    if(tableauLigne[i] == ligneAAjouter ){
    ajouterLigne = false;
    break;
    }
    }
    if(ajouterLigne){
    tableauLigne.push(ligneAAjouter);
    //ET ICI tu ajoutes la ligne au tableau :)
    }

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup le chomeur,
    En fait ajouter une ligne à un tableau ca n'a pas marché , mais j'ai pu ajouter le numero de la ligne dans le tableau et comme ca je compare le numero de la ligne récupérée avec les numeros qui existent dans le tableau.

    ca marche bien,

    merci beaucoup

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

Discussions similaires

  1. [XL-2007] Ajouter une ligne qui trace les bordures à une macro déjà fonctionnelle
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/05/2015, 13h37
  2. [JTable] Ajouter une écoute sur le bord d'une ligne
    Par GlamIS dans le forum Composants
    Réponses: 0
    Dernier message: 03/08/2011, 17h37
  3. Réponses: 2
    Dernier message: 12/07/2010, 12h28
  4. Ajouter une ligne à un tableau
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h20
  5. Ajouter une ligne dans une liste via un POPUP
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/01/2005, 16h20

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