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 :

Remplissage d'un tableau


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut Remplissage d'un tableau
    Bonjour à tous,

    J'aimerais remplir, dans une page HTML, un tableau avec des données existantes.

    Ce tableau se compose de quatre lignes et 4 colonnes.

    Seulement, dans ce tableau, la deuxième et la quatrième ligne, on devra créer par le code suivant, une cellule composée de trois cases (td colspan=3).

    Ce code parcourt un tableau intermédiaire, ou j'ai du mal à introduire une condition pour fusionner 3 cases dans une seule cellule.

    Code HTML : 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
    <table border="1">    <thead>
            <tr>
                <th class="ta-amwm" colspan="4" id="Titre">Calcul</th>
            </tr>
            <tr>
                <th class="ta-v25l" id="compteT">Compte</th>
                <th class="ta-v25l" id="codeT">Code</th>
                <th class="ta-v25l" id="calculT">Calcul</th>
                <th class="ta-v25l">R&eacute;sulat</th>
            </tr>
        </thead>
    </table>
    <script>
        var tab = [
            ["A", "B", "C", "D"],
            ["A1", "C1"],
            ["A2", "B2", "C2", "D2"],
            ["A3", "C3"],
        ];
        var nHTML = document.querySelector("table").innerHTML;
     
     
        tab.forEach(function (arrItem, i) {
            var td = "<tr>";
            arrItem.forEach(function (item, i1) {
                if (i % 2) {
                    // Si la ligne 2 ou 4
                    td += "<td colspan='3'>" + item + "</td>"; // créer une cellule de 3 cases
                    td += "<td>" + item + "</td>"; // crééer une deuxieme cellule
                    return; // passer à la ligne suivante
                }
                td += "<td>" + item + "</td>";
            });
            nHTML += td + "</tr>";
        });
        document.querySelector("table").innerHTML = nHTML;
    </script>

    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    je pense que ceci devrait faire l'affaire
    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
    let tab = [
            ["A", "B", "C", "D"],
            ["A1", "C1"],
            ["A2", "B2", "C2", "D2"],
            ["A3", "C3"],
        ];
        let nHTML = document.querySelector("table").innerHTML;
     
     
        tab.forEach(function (arrItem, i) {
            let td = "<tr>";
            if(i%2){
            arrItem.forEach(function (item, j) {
                if(j%2==0){
                    td += "<td colspan='3'>" + item + "</td>";
                }else{
                    td += "<td>" + item + "</td>";
                }
     
            });
            nHTML += td + "</tr>";
            }else{
                arrItem.forEach(function (item) {
                    td += "<td>" + item + "</td>";
                })
                nHTML += td + "</tr>";
     
            }
        });
        document.querySelector("table").innerHTML = nHTML;
    il te fallait 2 if et deux forEach

  3. #3
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour Nikopol,

    Merci pour le code.

    Je vois que if (i % 2) ne fonctionne pas comme if (j % 2 == 0) ?

    Pour le code précédent, j'ai essayé ceci, et ça donne le même résultat (Je n'ai pas encore compris comment, il a marché ) :

    Code HTML : 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
    <table border="1">    <thead>
            <tr>
                <th class="ta-amwm" colspan="4" id="Titre">Calcul</th>
            </tr>
            <tr>
                <th class="ta-v25l" id="compteT">Compte</th>
                <th class="ta-v25l" id="codeT">Code</th>
                <th class="ta-v25l" id="calculT">Calcul</th>
                <th class="ta-v25l">R&eacute;sulat</th>
            </tr>
        </thead>
    </table>
    <script>
        var tab = [
            ["A", "B", "C", "D"],
            ["A1", "C1"],
            ["A2", "B2", "C2", "D2"],
            ["A3", "C3"],
        ];
        var nHTML = document.querySelector("table").innerHTML;
     
     
        tab.forEach(function (arrItem, i) {
            var td = "<tr>";
            arrItem.forEach(function (item, i1) {
                if (i % 2) {
                    // Si la ligne 2 ou 4
                    td += "<td colspan='3'>" + item + "</td>"; // créer une cellule de 3 cases
                    return; // passer à la ligne suivante
                }
                td += "<td>" + item + "</td>";
            });
            nHTML += td + "</tr>";
        });
        document.querySelector("table").innerHTML = nHTML;
    </script>

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Et en évitant de plaquer des bouts de html dans le script, ça donnerait ça, par exemple:

    Code javascript : 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
        var tab = [
            ["A", "B", "C", "D"],
            ["A1", "C1"],
            ["A2", "B2", "C2", "D2"],
            ["A3", "C3"],
        ];
        const tb=document.querySelector("table").appendChild(document.createElement("tbody"));
     
        tab.forEach((v,i)=>{
            let tr=tb.appendChild(document.createElement("tr")),
    		td=document.createElement("td"),
    		cl;
    		if (i%2) {
    			cl=td.cloneNode();
    			tr.appendChild(cl);
    			cl.colSpan="3";
    			cl.textContent=v[0];
    			cl=td.cloneNode();
    			tr.appendChild(cl);
    			cl.textContent=v[1];
    		}
    		else{
    			v.forEach(v2=>{		
    				cl=td.cloneNode();
    				tr.appendChild(cl);
    				cl.textContent=v2;
    			})
    		}
    	})

  5. #5
    apt
    apt est déconnecté
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Par défaut
    Bonjour javatwister,

    Merci pour le code.


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

Discussions similaires

  1. [HashMap] lecture d'1 hasmap et remplissage d'un tableau
    Par _KB_ dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 30/06/2006, 19h33
  2. [VBA-E] eviter blanc remplissage listbox avec tableau
    Par chmod777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/04/2006, 12h16
  3. [LG]Remplissage d'un tableau
    Par luno2545 dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2004, 21h47
  4. Réponses: 13
    Dernier message: 14/10/2003, 14h31
  5. Réponses: 11
    Dernier message: 04/08/2003, 15h30

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