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 une ligne d'une table


Sujet :

JavaScript

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut Supprimer une ligne d'une table
    bonjour,
    je vous explique la situation. je possède une page jsp qui récupère des données depuis la base de donnée et les affichent dans un tableau. devant chaque ligne j'ai un bouton qui se crée d'une façon dynamique qui a pour role de supprimer cette ligne de la table.

    voici mon code jsp qui permet la récupération des données dans ma page jsp
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <tr id="tr<%= i %>">
    	<th><%= num_tel %></th>
    	<th><%= messagedefile %> </th>
    	<th>
    		<pre><input type="button" onclick="valider(this);" value="Valider">   <input type="button" bgcolor="#FF5000" onclick="removeRow(this);" value="Supprimer">       
    	</th>
    </tr>

    et voici mon code javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function removeRow(src)
    {
    	var Row = src.parentElement.parentElement;
    	document.all("table1").deleteRow(Row.rowIndex);
    	Valider.disabled = true;
    }
    le probleme ici c'est que qu'on je click sur le bouton supprimer c'est toujours la 1ere ligne (row) qui s'efface mais pas la ligne désirée.

    aidez moi svp à corriger mon code
    merci

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function removeRow(src)
    {
      var Row = src.parentElement.parentElement;
      Row.parentElement.removeChild(Row);
      Valider.disabled = true;
    }

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 929
    Points
    44 929
    Par défaut
    Bonjour,
    il me semble qu'il manque un niveau de parent
    INPUT -> PRE -> TH -> TR
    ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var oRow = src.parentElement.parentElement.parentElement;
    maintenant tu peux également utiliser un deleteRow, mais en laissant tombé cet horrible document.all.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRow.parentElement.deleteRow(oRow.rowIndex);

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web en Loisir
    Inscrit en
    Janvier 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web en Loisir

    Informations forums :
    Inscription : Janvier 2006
    Messages : 129
    Points : 100
    Points
    100
    Par défaut petite remarque
    bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.all("table1").deleteRow(Row.rowIndex);
    document.all n'est reconnu que dans internet explorer. Par conséquent, ça ne marchera pas dans les autres navigateurs.

    Utilise GetElementById("table1") pour recupérer l' élément dont l'ID est "table1"

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 929
    Points
    44 929
    Par défaut
    Citation Envoyé par rollbich Voir le message
    Utilise GetElementById("table1") pour recupérer l' élément dont l'ID est "table1"
    attention quand même javascript est sensible à la casse .

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par rollbich
    document.all n'est reconnu que dans internet explorer.
    Mouais... plus Chrome plus Opera plus Safari quand même...

    Mais cela ne veut pas dire que ta remarque est fausse bien au contraire, document.all ne devrait jamais être utilisé !
    Parmi les méthodes recommandées, il y a bien sûr getElementById() mais aussi querySelector(), querySelectorAll(), getElementsByTagName(), getElementsByName(), getElementsByClassName()...

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut
    merci les gars ça marche à merveille.
    maintenant une fois que je clique sur le bouton supprimer une requète s'execute qui me permet de mettre à jour ma base de donnée.
    je connais la requete qui me permet d'executer le traitement mais comment modifier ma fonction supprimer pour que je puisse faire la mise à jour?
    voici ma fonction javascript
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <tr id="tr<%= i %>">
    	<th id="th1"><%= id %></th>
    	<th><%= num_tel %></th>
    	<th><%= messagedefile %> </th>
    	<th>
    		<pre><input type="button" name="valider" value="Valider" style="background-color:#22780F;font-weight:bold;color:#ffffff; onclick="valider(this);">   <input type="button" name="delete" value="Delete" style="background-color:#ff0000;font-weight:bold;color:#ffffff;" onclick="removeRow(this);">       
    	</th>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function removeRow(src)
    {
    	var oRow = src.parentElement.parentElement.parentElement;
    	oRow.parentElement.deleteRow(oRow.rowIndex-1);
    	var id = document.getElementById('th1')
    	var jspcall = "edit.jsp?id="+id;
    	window.location.href = jspcall;
    }
    la page edit.jsp permet de mettre à jour ma base mais j'ai deux questions:
    1/comment trouver le bon paramettre id ( il faut que id correspond à id de la ligne supprimée)
    2/ j'aimerais que la page edit.jsp soit executée en backgroud.c'est à dire que je reste toujours dans la page initial(qui affiche mon tableau initial)

    NB: oRow.rowIndex est different de ID

  8. #8
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var id = document.getElementById('tr1'); //<==================
    var jspcall = "edit.jsp?id="+id; // <=======================
    window.location.href = jspcall;
    heu id est initialisé avec un DOMElement puis utilisé comme String
    Là je comprends pas
    soit tu veux l'id du DOMElement et c'est 'tr1' vu que tu fait un getElementByID
    et tout ça ne sert à rien
    soit tu veux passer dans l'url un DOMElement
    et ça n'a absolument aucun sens


    je suppose que tu veux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    id = oRow.id;
    oRow.parentElement.deleteRow(oRow.rowIndex-1)
    pour ensuite faire un appel ajax "edit.jsp?id="+id;
    A+JYT

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 50
    Points
    50
    Par défaut
    Merci mais si je fais comme ça, id retourne tr0. Or moi je veux le contenu de th0 qui est un child de tr0.

    J'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id = oRow.getElementById("th1")
    Mais je n'obtiens aucun résultat.

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu n'obtiens rien parce que getElementById() ne s'applique qu'à l'objet document...

    Ensuite, ton code est mal pensé pour ce que tu veux faire.
    Si tu veux récupérer une valeur précise, place-là dans un attribut data-* que tu peux ensuite facilement récupérer avec l'objet dataset ou la méthode getAttribute().

  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
    Citation Envoyé par stoner2008 Voir le message
    Merci mais si je fais comme ça, id retourne tr0. Or moi je veux le contenu de th0 qui est un child de tr0.
    mais utilise les éléments du DOM tu sais bien dans quel élément tu à mis les info non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    id = oRow.firstChild().innerText;
    oRow.parentElement.deleteRow(oRow.rowIndex-1)

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [XL-2010] supprimer des lignes entre une constante et une variable
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/01/2012, 16h46
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. supprimer une ligne et une colonne d'une matrice
    Par nessing dans le forum C++Builder
    Réponses: 8
    Dernier message: 14/08/2007, 15h42
  5. [VB6]créer une copie d'une ligne d'une table
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/02/2006, 16h08

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