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 :

Duplication ligne d'un tableau


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut Duplication ligne d'un tableau
    Bonjour,

    J'aurais souhaité savoir comment il était possible de dupliquer une ligne de tableau (<TABLE>) à l'aide du DOM.

    J'avais pensé à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var tableau = document.getElementById('tableau');
    			var duplic = tableau.childNodes[ligne.rowIndex].cloneNode();						
                tableau.appendChild(duplic);
    			tableau.moveRow(duplic.rowIndex,parseInt(ligne.rowIndex)+parseInt(1));
    Mais ça ne fait rien du tout !

    Merci

  2. #2
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Je précise que ligne correspond à la ligne en cours (TR)

  3. #3
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Pour commencer, la methode cloneNode exige un argument deep (true si il faut copier aussi les sous noeads, autrement false)

  4. #4
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    J'ai essayé de mettre true pour cloneNode, mais rien.
    L'erreur qu'il me balance est la suivante :

    rowIndex a la valeur null ou n'est pas un objet...

  5. #5
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    En gros, je voudrais une fonction javascript qui fasse la duplication d'une ligne d'un tableau

  6. #6
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    D'ou vient ligne ?
    Que contient il ?

  7. #7
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    En gros j'ai ça :

    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
    <TABLE>
          <tr id="1">
               <td>a</td>
               <td>b</td>
               <td>c</td>
               <td>d</td>
          </tr>
          <tr id="2">
               <td>a</td>
               <td>b</td>
               <td>c</td>
               <td>d</td>
          </tr>
          <tr id="3">
               <td>a</td>
               <td>b</td>
               <td>c</td>
               <td>d</td>
          </tr>
          <tr id="4">
               <td>a</td>
               <td>b</td>
               <td>c</td>
               <td>d</td>
          </tr>
          <tr id="5">
               <td>a</td>
               <td>b</td>
               <td>c</td>
               <td>d</td>
          </tr>
    </TABLE>
    Et ligne correspond à document.getElementById('3')

  8. #8
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    et rowIndex ? Tu es sur que cette propriété existe ???

  9. #9
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    oui oui ça existe

    http://www.quirksmode.org/dom/w3c_html.html

    Et ca marche sous IE et FF en plus !

  10. #10
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    et insertBefore ?

  11. #11
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    oui ça aussi impeccable sur tous les navigateurs !

  12. #12
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    J'ai essayé aussi insertBefore et rien !

  13. #13
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    J'ai l'impression que cloneNode ne fait ce que j'attends ...
    non?

  14. #14
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Je propose une chose...

    Et si ton tableau était créé de toute pièce depuis JavaScript ?
    Tu généres bien sûr le script depuis PHP.
    Ainsi, tu disposes d'un objet représantant le tableau en Javascript...
    Structure proposée :
    HTMLTableCreator
    -- Name : String
    -- DivContent : HTMLElement
    -- Rows : Array : HTMLTableCreatorRow
    -- GetRowPosition : Function (Row) As Number
    -- MoveRow : Sub (OldPos, NewPos, Before)
    -- DeleteRow : Sub (Pos)
    -- CloneRow : Function (Pos) As HTMLTableCreatorRow
    -- AddRow : Sub (Row)
    -- Generate : Sub ()

    HTMLTableCreatorRow
    -- Name : String
    -- ParentTable : HTMLTableCreator
    -- GetPosition : Function () As Number
    -- Move : Sub (NewPos, Before)
    -- Delete : Sub ()
    -- Clone : Function () As HTMLTableCreatorRow
    -- Cols : Array : HTMLTableCreatorCol
    -- GetColPosition : Function (Number)
    -- MoveCol : Sub (OldPos, NewPos, Before)
    -- AddCol : Sub (Col)
    -- DeleteCol : Sub (Col)
    -- Generate : Sub (ParentNode)

    HTMLTableCreatorCol
    -- Name : String
    -- ParentRow : HTMLTableCreatorRow
    -- ParentTable : HTMLTableCreator
    -- ...
    -- GetColSpan : ...
    -- GetInnerHTMl : ...
    -- SetColSpan : ...
    -- SetInnerHTML : ...
    -- Generate : Sub (ParentNode)
    Ensuite, après chaque changement, tu execute la fonction Generate de l'HTMLTableCreator qui crée une table et la place dans le DivContent...
    Attention que tu DOIS mettre un TBody à ta table (TABLE(1):TBODY(1):TR(x):TD(x))

  15. #15
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    C'est super sympa ce que tu me proposes là, mais je pense qu'il doit y avoir une solution beaucoup plus simple pour résoudre mon problème.
    non?

  16. #16
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tableau = document.getElementById('tableauPlanif');
    			duplic = ligne.cloneNode(true);		
                tableau.insertBefore(duplic);
    Pourquoi ça marche pas ça ?

  17. #17
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Il doit bien y avoir un moyen simple de dupliquer une ligne d'un tableau, non?
    La solution de Fremy me ferait faire beaucoup trop de modifications. Ma vie toute entière ne suffirait pas.

  18. #18
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par linar009
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tableau = document.getElementById('tableauPlanif');
    			duplic = ligne.cloneNode(true);		
                tableau.insertBefore(duplic);
    Pourquoi ça marche pas ça ?
    insertBefore

    insertBefore(duplic, TrHtmlElement)

  19. #19
    Membre éclairé Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Par défaut
    Argument non valide me dit-il fièrement lorsque je mets ta proposition Fremy ...

Discussions similaires

  1. Style d'une ligne d'un tableau et Checkbox
    Par echecetmat dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/01/2005, 15h03
  2. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34
  3. Incrémenter lignes d'un tableau
    Par skea dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/01/2005, 11h12
  4. Espacement entre les ligne d'un tableau
    Par Flobel dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 02/11/2004, 09h33
  5. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28

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