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 :

Supprimer dynamiquement des lignes d'un tableau


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut Supprimer dynamiquement des lignes d'un tableau
    Bonjour,

    je vous souhaite à tous de très belles fêtes de fin d'année .

    Pour en revenir au problème, je vous avoue que je ne connais rien à javascript et que ça fait quelques heures seulement que je m'y suis mis parce que je me suis rendu compte que j'en ai besoin pour créer automatiquement les champs sur ma page html.
    Je créé automatiquement une nouvelle ligne dans ma page à l'aide du code suivant (que j'ai trouvé sur le net et adapté à mon cas):
    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
     
    function AddRow(ID){
        var newRow = document.getElementById(ID).insertRow(-1);
        var newCell = newRow.insertCell(0);
        newCell.innerHTML = '<td width="100" valign="middle"><input name="Tnbre" size="10" type="text"/></td>';
        newCell = newRow.insertCell(1);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(2);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(3);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(4);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(5);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(6);
        newCell.innerHTML = '<td width="181" valign="middle"><input name="Tnbre" size="20" type="text"/></td>';
        newCell = newRow.insertCell(7);
        newCell.innerHTML = '<td width="50" valign="middle"><input type="button" onClick="AddRow(\''+ID+'\')" value="+"/> <input type="button" onClick="function() {RemoveRow(\''+ID+'\', '+newRow.rowIndex+')}" value="-" /></td>';
    }
    Là, tout se passe bien (je suis sous IE8).

    Je veux pouvoir maintenant supprimer la ligne créée dynamiquement mais là je coince.
    J'ai regardé les discussions suivantes:
    http://www.developpez.net/forums/d33...ligne-tableau/
    http://www.developpez.net/forums/d82...html-page-jsp/

    Seulement, je n'arrive toujours pas à le faire. Pouvez vous m'aider?

    Voici mon code de suppression:
    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
     
    function RemoveRow(ID, num){
      document.getElementById(ID).deleteRow(num);
     
      //Recomptage des lignes...
      var tableau = document.getElementById(ID);
      var trs = tableau.rows;
      var n = trs.length;
      var i;
     
      for (i=1; i<n; i++) //on commence à 1 et non à 0 ;)
      {
        trs[i].innerHTML = trs[i].rowIndex;
      }
     
    }
    J'avais pensez en cliquant sur le bouton déterminer l'index de la ligne courante puis la supprimer, mais je suis vraiment coincé.

    Merci de m'aider et de privilégier des réponses assez détaillées et simple (car je suis débutant en javascript).

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Noyez Joël, qu'ils disaient
    Bonjour,

    Ecrivez plutôt ceci dans le bouton de suppression:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onClick="RemoveRow(\''+ID+'\', '+newRow.rowIndex+')"
    Cependant, je constate une erreur Javascript lors du recomptage des lignes. Je n'ai pas encore compris ce qui bloquait, mais le résultat obtenu est erronés, il se trompe dans ses ID après la première suppression.

    Cette instruction me parait étrange:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      for (i=1; i<n; i++) //on commence à 1 et non à 0 ;)
      {
        trs[i].innerHTML = trs[i].rowIndex;
      }

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 170
    Points : 66
    Points
    66
    Par défaut
    Cependant, je constate une erreur Javascript lors du recomptage des lignes. Je n'ai pas encore compris ce qui bloquait, mais le résultat obtenu est erronés, il se trompe dans ses ID après la première suppression.

    Cette instruction me parait étrange:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      for (i=1; i<n; i++) //on commence à 1 et non à 0 ;)
      {
        trs[i].innerHTML = trs[i].rowIndex;
      }
    [/QUOTE]


    Bonsoir, dans le code que j'ai pris, la ligne trs[i].innerHTML = trs[i].rowIndex; est plutôt écrite trs[i].Cell[0].innerHTML = trs[i].rowIndex; ou quelque chose comme ça. Mais comme je n'ai pas cet élément, je l'ai zappé en essayant d'adapter au mieux mon code, mais je me suis bien trompé je pense.

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Boucle inutile ?
    Bonsoir flet,

    J'ai trituré ton code (j'imaginais pas ca aussi galère!). Voici le code javascript auquel j'arrive

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <SCRIPT language="javascript">
    
    var cptRows=0; // compteur des lignes, qui servira pour l'identifiant unique de chaque ligne du tableau
    
    function AddRow(ID){
        //récupération du tableau HTML
        var theTable=document.getElementById(ID);
    
        //création dynamique d'une nouvelle ligne de tableau
        var newRow =document.createElement("TR");
    
        var newCell;
    
        //on affecte un identifiant unique, composé du nom du tableau et du compteur de ligne
        newRow.id=ID+"_"+cptRows;
    
        cptRows++; //on incrémente, pour la prochaine ligne quon créera
    
        newCell= newRow.insertCell(0);
    
        newCell.innerHTML = '<td width="100" valign="middle"><input name="Tnbre" size="10" type="text"/>'+newRow.id+'</td>';
        newCell = newRow.insertCell(1);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(2);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(3);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(4);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(5);
        newCell.innerHTML = '<td width="80" valign="middle"><input name="Tnbre" size="7" type="text"/></td>';
        newCell = newRow.insertCell(6);
        newCell.innerHTML = '<td width="181" valign="middle"><input name="Tnbre" size="20" type="text"/></td>';
        newCell = newRow.insertCell(7);
        newCell.innerHTML = '<td width="50" valign="middle"><input type="button" onClick="AddRow(\''+ID+'\')" value="+"/>'
    +'<input type="button" onClick="RemoveRow(\''+ID+'\',\''+newRow.id+'\')" value="-" /></td>';
    
        document.getElementById(ID).appendChild(newRow);
    
    }
    
    function RemoveRow(parentID, rowID) {
        //on récupère le tableau "parent"
        var parentNode=document.getElementById(parentID);
    
        //on supprime la ligne dont on a recu l'identifiant
        parentNode.removeChild(document.getElementById(rowID));
    
        //pour plus dinfos sur la méthode voir http://code.google.com/p/doctype/wiki/DocumentRemoveChildMethod
    }
    
    </SCRIPT>
    Si tu veux tester, jai mis en pièce jointe la page complète (retire le passage en italique dans le code ci dessus, cest pour mettre en évidence l'identification de chaque ligne du tableau HTML.

    Si ce code t'intéresse, je suis dispo pour des explications supplémentaires si nécessaires.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Supprimer dynamiquement une ligne d'un tableau
    Par loango dans le forum ASP.NET
    Réponses: 1
    Dernier message: 27/10/2008, 17h51
  2. [MySQL] Mise à jour dynamique des lignes d'un tableau
    Par woodyfrance dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/02/2008, 11h50
  3. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/06/2007, 12h15
  4. ajouter des lignes dans un tableau dynamique
    Par yviii dans le forum Windows
    Réponses: 1
    Dernier message: 20/06/2007, 11h28
  5. Ajouter dynamiquement des lignes à un tableau HTML
    Par jeannot1974 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 20/11/2006, 15h39

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