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 :

Rajouter une colonne dans une <table>


Sujet :

JavaScript

  1. #1
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 734
    Par défaut Rajouter une colonne dans une <table>
    Bonjour.

    Je manipule un énorme tableau (pratiquement 400 <tr>), de 3 colonnes, et je dois rajouter une colonne vide (pour l'instant) entre l'actuelle deuxième et troisième :

    Passer de :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <tr>
    <td>1</d>
    <td>2</td>
    <td>3</td>
    </tr>

    À :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr>
    <td>1</d>
    <td>2</td>
    <td>Nouvelle colonne</td>
    <td>3</td>
    </tr>

    J'ai rapidement bidouillé un script que je lance dans la console javascript :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    document.querySelectorAll("tr td:nth-child(2)").forEach(td => {
        ntd = document.createElement("td");
        td.insertAdjacentElement("afterend", ntd);
    })

    Pas de souci à ce niveau là, ça fonctionne et les 400 nouveaux éléments apparaissent dans le DOM. Je pensais ensuite copier-coller le HTML depuis l'outil développeur (F12).

    Mais, à ma grande stupéfaction, ia copie ne prend absolument pas le DOM généré, seulement le DOM de base. Pareil avec l'outil "Code source de la page". Testé avec Firefox et Chromium.

    Donc est-ce qu'il est possible de dump le HTML, en incluant les éléments générés ?
    Si non, est-ce qu'il y a un autre moyen de rajouter ces éléments, via script ou autre (Python, shell, autre, …) ? Sachant que je suis sous Linux et j'utilise Visual Studio Code.

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 734
    Par défaut
    Bon j'ai réussi avec une méthode sioux, avec chercher/remplacer via des regex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr>\n(\t+<td>.*)\n(\t+<td>.*)\n(\t+<td>.*)\n\t+</tr>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <tr>\n$1\n$2\n\t\t\t\t<td></td>\n$3\n\t\t\t</tr>
    En gros, chercher la séquence <tr> + les 3 <td> + </tr> et rajouter le couple <td></td> au bon endroit.
    Pas très conventionnel mais ça fonctionne.

  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 644
    Par défaut
    en passant par "code source de la page" c'est normal de voir le résultat de base envoyé par le serveur.
    par contre dans les outils de développement, vous auriez dû tout récupérer. si vous avez la possibilité de réessayer, faites "Modifier comme HTML" et ensuite vous pouvez copier le code html actuel.

  4. #4
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 734
    Par défaut
    Je viens de tester l'option "Modifier comme HTML", celle-ci ne me montre pas non plus les modifications du DOM via le script que j'ai lancé dans la console.

    Par contre je peux copier le contenu rajouté par cette option.

    C'est comme si il y avait deux comportements distincts, l'un ignore les nouveaux éléments, l'autre non. J'en suis presque à me demander si je vais pas chercher de l'aide côté forum des navigateurs.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    il existe depuis la nuit des temps des méthodes de manipulation pour les <table> comme HTMLTableRowElement.insertCell().

    Le code en devient des plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const table = document.getElementById("id-table");
    for( let tr of table.rows){
      tr.insertCell(2); //  (!) les index commence à zéro
    }

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

Discussions similaires

  1. [WD24] Modifier la valeur d'une colonne dans un champ table dans une boucle
    Par lololebricoleur dans le forum WinDev
    Réponses: 6
    Dernier message: 02/06/2020, 11h27
  2. Réponses: 1
    Dernier message: 14/02/2016, 11h59
  3. Exclusion colonne dans SHOW CREATE TABLE
    Par bugbug dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/04/2014, 22h26
  4. [WD14] Affichage colonne dans combo champ table
    Par Deep Lowee dans le forum WinDev
    Réponses: 2
    Dernier message: 10/01/2013, 13h11
  5. Réponses: 1
    Dernier message: 25/12/2009, 12h36

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