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 :

Manipuler un tableau sans connaître le nombre de lignes


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut Manipuler un tableau sans connaître le nombre de lignes
    bonjour,

    je voudrais manipuler un tableau dont je connais QUE l'ID et le nombre de colonnes mais pas le nombre de ligne.

    est-ce que c'est possible de le faire en javascript/DOM ? est-ce plus simple (moins gourmant en ressource) en javascript pur ou plutôt qu'en jquery ? sachant que le code servira qu'à une seule page.

    En fait sur un tableau, j'ai besoin d'appliquer un traitement qui s'apparente à l'inverse de tetris : au lieu de pousser les contenus vers le bas, je dois les remonter vers le haut.
    En une phrase : pour chaque cellule, je regarde si la cellule du dessus est vide, si oui, alors je monte le contenu dedans.
    (ça sous-entend donc que mon algo par de la ligne du bas et remonte).

    Avant de commencer une moulinette, je me dis que peut-être il existe déjà une librairie JS qui permet de "trier" un tableau comme ça ?

    merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 636
    Points : 66 655
    Points
    66 655
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $lignes=document.getElementById('trumachinbidule').getElementsByTagName('tr')
    //ou document.querySelector("#id tr");
    var i=-i;
    while ($lignes[++i]) {
    //la ligne existe
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut
    c'est correct ça ? sans même une initialisation ?

  4. #4
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 450
    Points : 4 600
    Points
    4 600
    Par défaut
    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
    <table id="tableTest">
    <tr>
      <td>l1c1</td>
      <td>l1c2</td>
    </tr>
    <tr>
      <td>l2c1</td>
      <td>l2c2</td>
    </tr>
    <tr>
      <td>l3c1</td>
      <td>l3c2</td>
    </tr>
    </table>
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const allLines = document.querySelectorAll('#tableTest tr');
    document.querySelectorAll('#tableTest tr:not(:first-of-type)').forEach((ligne, i) => {
    	ligne.style.backgroundColor = 'rgba(0,255,0,.2)';
      const previous = allLines[i];
      previous.style.backgroundColor = 'rgba(255,0,0,.2)';
    });
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 636
    Points : 66 655
    Points
    66 655
    Billets dans le blog
    1
    Par défaut
    Sans utilisation ?
    et ++i ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 450
    Points : 4 600
    Points
    4 600
    Par défaut
    initialisation

    en gros, tu initialises i avec i
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  7. #7
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Sans utilisation ?
    et ++i ???
    le var est à la ligne3 et le i++ à la ligne4

    var i=-i ne produit donc aucune erreur si i est null ? c'est parce qu'il y a "var" en déclaratoin avec ?

  8. #8
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 155
    Points
    17 155
    Par défaut
    Salut

    Moi aussi je suis troublé par cette syntaxe, et comme j'utilise DVP pour apprendre, je me permet de poster dans cette discussion.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var i=-i;
    console.log(i); // renvoi NaN
    console.log(++i); // renvoi NaN
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 450
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 450
    Points : 4 600
    Points
    4 600
    Par défaut
    je pense que SpaceFrog a juste faire une erreur ca arrive meme aux meilleurs
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 636
    Points : 66 655
    Points
    66 655
    Billets dans le blog
    1
    Par défaut
    Mea Culpa !
    Non seulement je mouffle à fond mais je bigle à mort
    Il faut absolument que je me trouve des doigts neuf et surtout un rendez vous chez un bon ophtalmo

    il faut lire Avec toutes mes plus plates confuses
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 155
    Points
    17 155
    Par défaut
    ben oui, c'est çà, quand les supères bons fonts une erreurs , les apprentis ce mettent à douter de leur petit savoir .
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 636
    Points : 66 655
    Points
    66 655
    Billets dans le blog
    1
    Par défaut
    Quand la sénélité guette le maitre, l'élève prends sa place
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    et pourquoi ne pas tout simplement utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('maTable').rows.length
    https://developer.mozilla.org/en-US/...leElement/rows
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  14. #14
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    En une phrase : pour chaque cellule, je regarde si la cellule du dessus est vide, si oui, alors je monte le contenu dedans. (ça sous-entend donc que mon algo par de la ligne du bas et remonte).
    cela risque de ne pas être suffisant si il a deux cellules vides l'une sous l'autre dans la même colonne.

    Même si j'ai du mal à comprendre que l'on « défragmente » par colonne les données d'une table qui sont normalement intimement liées à une ligne/colonne.

    Néanmoins, pour le principe, il faut réaliser une transposition des cellules de ta table.

    Donc en partant de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LIG1 = [C1L1, C2L1, C3L1, ...];
    LIG2 = [C1L2, C2L2, C3L2, ...];
    LIG3 = [C1L3, C2L3, C3L3, ...];
    ...
    et en utilisant les collections rows liées au table, afin d'obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    COL1 = [C1L1, C1L2, C1L3, ...];
    COL2 = [C2L1, C2L2, C2L3, ...];
    COL3 = [C3L1, C1L2, C1L3, ...];
    ...
    ensuite boucher les trous ne sera pas bien compliqué

  15. #15
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut ajout d'un exemple
    cela risque de ne pas être suffisant si il a deux cellules vides l'une sous l'autre dans la même colonne.
    non je commence par la derniere ligne et fait le traitement de gauche à droite

    si j'ai (V pour vide, X pour qqchose) :

    VVVVV
    VVVVV
    VVVVV
    VVXVV

    ça va devenir:

    VVXVV
    VVVVV
    VVVVV
    VVVVV


    Même si j'ai du mal à comprendre que l'on « défragmente » par colonne les données d'une table qui sont normalement intimement liées à une ligne/colonne.
    faut le voir comme une matrice en fait (mon exemple de tetris inversé était pourtant parlant!). je me demande d'ailleur s'il n'existe pas une fonction existante permettant de recollaliser un tableau (de TR et TD) en le traitant comme une matrice mathématique

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 939
    Points : 44 112
    Points
    44 112
    Par défaut
    Je me suis mal exprimé, l'« une sous l'autre », je pensais à plusieurs cellules vides dans la même colonne, au final le traitement reste le même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    0 - 1 - 2
    V - V - X
    X - X - V
    V - X - X
    X - V - X
    Pour la transposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const lignes = table.rows;
    const nbLigs = lignes.length;
    // transpose la table
    const offsetTable = 0;
    const tabCellules = [];
    let nbCols = lignes[offsetTable].cells.length;
    for (let col = 0; col < nbCols; col += 1) {
      tabCellules[col] = [];
      for (let lig = offsetTable; lig < nbLigs; lig += 1) {
        tabCellules[col].push(lignes[lig].cells[col]);
      }
    }
    et pour la « défragmentation » :
    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
    // « défragmentation » des colonnes
    nbCols = tabCellules.length;
    for (let col = 0; col < nbCols; col += 1) {
      // récup. les cellules non vides
      const tabNoEmpty = tabCellules[col].filter((cell) => cell && cell.textContent !== "");
      // si il existe donc des vides
      if (tabNoEmpty.length < tabCellules[col].length) {
        // décalage vers le haut des textContent
        tabCellules[col].forEach((cell, ind) => {
          if (cell) {
            const newText = tabNoEmpty[ind] ? tabNoEmpty[ind].textContent : "";
            cell.textContent = newText;
          }
        });
      }
    }
    ... avec utilisation de la méthode filter() pour la récupération des cellules non vides, ou l'inverse d'ailleurs, et réaffectation des textContent si besoin.

    Exemple complet en ligne : Défragmentation verticale d'une table.

  17. #17
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut
    super cet exemple.

    Pour ma culture personnelle, cela s'appelle-t-il vraiment "defragmentation" ? car on ne doit surtout pas changer de ligne les cellules, juste les remonter (contrairement à la deframation PC disque dur où chaque cellule est fictivement représentée en tableau alors qu'elles sont enchainées)

  18. #18
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    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 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Bonjour,

    Petite alternative, que je devais proposer en tant que défenseur des tableaux ul > li :


    http://javatwist.imingo.net/compact.htm

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8">
    <title></title>
     
    </head>
     
    <body>
    <div id="corps">
    	<ul>
    		<li>Colonne 1</li>
    		<li>0</li>
    		<li></li>
    		<li>2</li>
    		<li>3</li>
    		<li>4</li>
    		<li>5</li>
    		<li>6</li>
    		<li>7</li>
    		<li>8</li>
    	</ul>
    		<ul>
    		<li>Colonne 2</li>
    		<li></li>
    		<li>1</li>
    		<li>2</li>
    		<li>3</li>
    		<li>4</li>
    		<li>5</li>
    		<li>6</li>
    		<li>7</li>
    		<li></li>
    	</ul>
    	<ul>
    		<li>Colonne 3</li>
    		<li>0</li>
    		<li>1</li>
    		<li></li>
    		<li></li>
    		<li>4</li>
    		<li>5</li>
    		<li></li>
    		<li></li>
    		<li>8</li>
    	</ul>
    	<ul>
    		<li>Colonne 4</li>
    		<li>0</li>
    		<li>1</li>
    		<li>2</li>
    		<li>3</li>
    		<li>4</li>
    		<li>5</li>
    		<li>6</li>
    		<li></li>
    		<li>8</li>
    	</ul>
    	<ul>
    		<li>Colonne 5</li>
    		<li>0</li>
    		<li>1</li>
    		<li>2</li>
    		<li></li>
    		<li></li>
    		<li>5</li>
    		<li>6</li>
    		<li>7</li>
    		<li>8</li>
    	</ul>
    </div>
    <button id="go">compacter</button>
     
    </body>
    </html>

    Code css : 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
    ul {
    	padding:0px;
    	width:10%;
    	list-style-type:none;
    }
     
    #corps {
    	display:flex;
    }
     
    li {
    	height:20px;
    	text-align:center;
    	border:1px solid;
    }
     
    ul li:first-child {
    	background-color:lime;
    }

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    document.querySelector("#go").addEventListener("click",()=>{
    	const t=document.querySelectorAll("ul");
    	t.forEach(v=>{
    		v.querySelectorAll("li").forEach(v2=>{
    			if(!v2.textContent) v.appendChild(v2)
    		})
    	})
    })

  19. #19
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Original javatwister, et avec un code bien concis.

    Pas mal aussi la gestion CSS des couleurs des cases, NoSmoking !

    J'ai réfléchi à une variante de la fonction "defragTable" de NoSmoking en ayant ces objectifs :
    - Traitement direct (devrait être rapide).
    - Boucles traditionnelles (simple à comprendre pour un débutant).
    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
    const ar_ligns=table.rows; //lignes
    const nb_nombLign=ar_ligns.length; //nombre lignes
    const nb_nombColo=ar_ligns[0].cells.length; //nombre colonnes
    for(let i=0;i<nb_nombColo;i++)
    	{
    	for(let j=0;j<nb_nombLign;j++)
    		{
    		if(ar_ligns[j].cells[i].textContent==="")
    			{
    			for(let k=j+1;k<nb_nombLign;k++)
    				{
    				const ob_=ar_ligns[k].cells[i];
    				if(ob_.textContent!=="")
    					{
    					ar_ligns[j].cells[i].textContent=ob_.textContent;
    					ob_.textContent="";
    					j++;
    					}
    				}
    			break;
    			}
    		}
    	}

  20. #20
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 380
    Points : 858
    Points
    858
    Par défaut
    Original javatwister, et avec un code bien concis.
    sauf qu'en épreuve d'examen, ça vaut une note de 0/20 (hors sujet) car il n'a pas tenu compte de ma demande : manipuler un tableau (table tr td...) et non pas une suite de Li Ul Div.....etc.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/11/2015, 05h19
  2. Faire une somme sans connaître le nombre d'onglets et leur nom
    Par Aurianelm dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2014, 16h29
  3. Réponses: 7
    Dernier message: 16/06/2010, 17h12
  4. Comment connaître le nombre de lignes?
    Par Xanto dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/08/2007, 11h23
  5. [C#] Comment connaître le nombre de lignes affectées par un Select ?
    Par diaboloche dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2006, 14h56

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