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 :

Suppression d'une ligne d'un tableau


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Suppression d'une ligne d'un tableau
    Bonjour à tous,

    Je ne pratique pas le javascript, néanmoins j'essai quand même quelques petites bidouilles en attendant de m'y mettre vraiment

    Voilà j'ai un simple tableau html et je veux lui ajouter et supprimer des lignes. J'arrive a ajouter des lignes sans problème, mais je bloque avec la fonction removeClass(). J'utilise jQuery. Autre petite informations il existe une ligne de base dans mon tableau.

    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
    <script>
    	var nbligne = 1;
     
    	function nouvelleligne(nbligne) {
    		return '<tr class="ligne'+nbligne+'">'+
    			'<td>'+nbligne+'</td>'+
    			'<td><input type="text" name="nom[]" /></td>'+
    			'<td><input type="text" name="prenom[]" /></td>'+
    			'<td>'+
    				'<select>'+
    					'<option value="1">Adulte</option>'+
    					'<option value="2">Enfant</option>'+
    					'<option value="3">Bébé</option>'+
    				'</select>'+
    			'</td>'+
    			'<td>'+
    				'<select>'+
    					'<option value="1">Vélo</option>'+
    					'<option value="2">Cavalier</option>'+
    					'<option value="3">Randonneur</option>'+
    				'</select>'+
    			'</td>'+
    			'<td><a style="cursor: pointer" onclick="supprimerligne($(this));" id="deleteAfter"></a></td>'+
    		'</tr>';
    	}
     
    	$("#insertAfter").click(function () {
    		nbligne ++;
    		$(nouvelleligne(nbligne)).insertBefore('.debut_table');
    	});
     
    	function supprimerligne(ligne) {
    		$("tr").removeClass("ligne"+ligne);
    	}
    </script>
    J'espère pouvoir trouver de l'aide ici

    Merci et bon weekend prolongé à tous

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 108
    Points : 44 921
    Points
    44 921
    Par défaut
    Bonjour,
    la méthode removeClass() ne me parait pas adaptée à ce que tu souhaites faire, je verrais plutôt la méthode remove() après avoir récupéré le parent de TR

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    regarde cette discussion :
    http://www.developpez.net/forums/d33...u/#post2057900

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Merci beaucoup pour les réponses, je me replonge dans mon problème après ce long weekend sans ordinateur

    j'ai donc essayé ta solution Auteur, qui fonctionne à merveille. Néanmoins j'ai fais quelques petites modifications, et la ...

    Je me retrouve avec le problème où mon bouton supprimer me supprime seulement la première ligne de mon tableau

    Voici mon 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
    <script type="text/javascript">
    <!--
    function ajoutLigne() {
    	var Cell;
    	var nom = document.forms["formulaire"].nom.value;
    	var prenom = document.forms["formulaire"].prenom.value;
    	var tableau = document.getElementById('tableau');
    	var ligne = tableau.insertRow(-1);  
     
    	Cell = ligne.insertCell(0);
    	Cell.innerHTML = nom;
    	Cell = ligne.insertCell(1); 
    	Cell.innerHTML = prenom;
    	Cell = ligne.insertCell(2);	
    	Cell.innerHTML = "<a style=\"cursor: pointer;\" id=\"#insertAfter\" onclick=\"suppression('"+ligne+"');\">Supprimer</a>";
     
    	document.forms["formulaire"].nom.value = "";
    	document.forms["formulaire"].prenom.value = "";
    }
     
    function suppression(ligne) {
    	document.getElementById('tableau').deleteRow(ligne.rowIndex);
     
    	//Recomptage des lignes...
    	var tableau = document.getElementById('tableau');
    	var trs = tableau.rows;
    	var n = trs.length;
    	var i;
     
    	for (i=1; i<n; i++) { //on commence à 1 et non à 0 ;)
    		trs[i].cells[0].innerHTML = trs[i].rowIndex;
    	}
    }
    //-->
    </script>
    Et le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form name="formulaire">
        <table name= "tableau" id="tableau" border="1">
            <tr>
                <td>Nom</td>
                <td>Prenom</td>
                <td>Supprimer</td>
            </tr>
            <tr>
                <td><input type="text" name="nom"></td>
                <td><input type="text" name="prenom"></td>
                <td><input type="button" value="Ajouter une ligne" onclick="ajoutLigne()" ></td>
            </tr> 
        </table>
    </form>
    D'avance merci, et bonne journée

  5. #5
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Pas vraiment étonnant. Un coup de debugger (teste Firbug sous Firefox, Webkit Inspector sous Chrome/Safari et de façon générale F12 sur tous les navigateurs, IE et Opéra aussi) et tu te serais aperçu que ton argument ligne n'est pas bon. Tu lui passes un string, pas l'objet en lui même.

    Essaie plutôt comme ç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
    <script type="text/javascript">
    <!--
    function ajoutLigne() {
    	var Cell;
    	var nom = document.forms["formulaire"].nom.value;
    	var prenom = document.forms["formulaire"].prenom.value;
    	var tableau = document.getElementById('tableau');
    	var ligne = tableau.insertRow(-1);  
     
    	Cell = ligne.insertCell(0);
    	Cell.innerHTML = nom;
    	Cell = ligne.insertCell(1); 
    	Cell.innerHTML = prenom;
    	Cell = ligne.insertCell(2);	
    	Cell.innerHTML = "<a style=\"cursor: pointer;\" id=\"#insertAfter\" onclick=\"suppression('"+ligne.rowIndex+"');\">Supprimer</a>";
     
    	document.forms["formulaire"].nom.value = "";
    	document.forms["formulaire"].prenom.value = "";
    }
     
    function suppression(ligne) {
    	document.getElementById('tableau').deleteRow(ligne);
     
    	//Recomptage des lignes...
    	var tableau = document.getElementById('tableau');
    	var trs = tableau.rows;
    	var n = trs.length;
     
    	//Plus besoin de décalage
    }
    //-->
    </script>
    Même si je n'approuve pas cette méthode, au moins ça marche. Si j'ai compris ce que tu cherches à faire. Mieux vaut donner un id à ta cellule (ou juste la chaîne "Supprimer" si tu préfère) et ensuite rajouter un delegate à cet id qui réagit à l'évènement clicl.
    Cela t'évitera de polluer ton code HTML avec du javascript inline.

Discussions similaires

  1. Suppression d'une ligne d'un tableau
    Par sroux dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/09/2009, 23h28
  2. Suppression d'une ligne dans un tableau
    Par guigui69 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 27/11/2008, 18h47
  3. Réponses: 5
    Dernier message: 10/11/2006, 11h00
  4. [HTML]Débutant-Suppression d'une ligne dans un tableau
    Par Kotik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/07/2006, 11h53
  5. Suppression d'une ligne d'un tableau
    Par ratapapa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/03/2006, 09h35

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