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 :

Récupérer une valeur contenu dans un array


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut Récupérer une valeur contenu dans un array
    bonjour
    voila un JavaScript ,je sais pas reprendre valeur ,cliquer cliquer...
    par exemple je clique
    1 5 67 89 43
    ben par exemple le 1 additionner au 43 ou 67 moins 5 ...
    enfin c'est reprendre les valeur pour travailler avec ..
    merci

    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
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    "use strict";
    // ----------
    // 0- création de la table - 90 cases
    let table = document.createElement('table');
    let tbody = table.createTBody();
    for (let row = 1; row <= 10; row++) 
    {
      let tr = tbody.insertRow();
      for (let col = 1; col <= 9; col++) 
      {
        let key = row + ((col-1) * 10);
        let td = tr.insertCell();
        let label = document.createElement('label');
        let input = document.createElement('input');
        input.type = 'checkbox';
        input.name = 'cb['+key+']';
        input.value = key; // on met la clé en valeur
        label.append(key, input);
        td.append(label);
      }
    }
    document.getElementById('form90cases').prepend(table); // insert la table dans le formulaire
    // ----------
    // 1- checkbox
    let allBoxes = document.querySelectorAll('#form90cases input[type=checkbox]');
    allBoxes.forEach(function(box) {
      box.addEventListener('click', function(){ 
    //    box.parentNode.parentNode.classList.toggle('on');
        box.closest('td').classList.toggle('on');
        show_results();
      });
    });
    // ----------
    // 2- Reset (Vider la grille)
    let btnReset = document.querySelector('#form90cases button[name="btn-reset"]');
    btnReset.addEventListener('click', function(){ 
      for (let box of allBoxes) {
        box.checked = false; // décoche la sélection
        box.removeAttribute('checked'); // décoche la sélection
    //    box.parentNode.parentNode.classList.remove('on');
        box.closest('td').classList.remove('on');
      }
        show_results();
    });
    // ----------
    // 3- inverser la sélection
    let btnInvert = document.querySelector('#form90cases button[name="btn-invert"]');
    btnInvert.addEventListener('click', function(){ 
      for (let box of allBoxes) {
        box.checked = !box.checked; 
    //    box.parentNode.parentNode.classList.toggle('on');
        box.closest('td').classList.toggle('on');
      }
        show_results();
    });
    // ----------
    // 4- Envoyer
    let btnEnvoi = document.querySelector('#form90cases button[name="btn-envoi"]');
    btnEnvoi.addEventListener('click', function(){ 
        show_results();
    });
    // ----------
    function show_results()
    {
    	let show_results = document.getElementById('show-results');
    	let nbre_results = document.getElementById('nbre-results');
    	let results = [];
    	let ii = 0;
      for (let box of allBoxes) 
      {
        if( box.checked )
    	  {
    		  results[ii] = Number(box.value);
    		  ii++;
    	  }
      }
      results.sort(compareNombres); // ordre croissant
     
      // Affichage des résultats
      nbre_results.textContent = ii;
    //  show_results.textContent = results.join(', ');
      show_results.innerHTML = '<b>' + results.join('</b>, <b>') + '</b>';
    //  show_results.innerHTML = '<ul><li>' + results.join('</li><li>') + '</li></ul>'; // liste Ã* puces
    }
    function compareNombres(a, b) { return a - b; } // permet de trier correctement les nombres
    // ----------

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    oui mais si tu cliques 24 à droite et 72 en bas il se peut qu'à la fin tu finisses avec 7 ... en plus ?
    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 confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut ligne74
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      show.Number(1);
      show.Number(2);
    ca ne affiche rien

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Je ne sais pas ce que @SpaceFrog a compris à votre problème, pour moi c'est très nébuleux.

    Il nous manque les codes HTML et CSS et une meilleure explication du contenu de la table et quel résultat obtenir !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    @Daniel => Non j'ai rien capté, mais je voulais juste participer à une discussion de mecs bourrés ...


    c'est du javascript ???

    Si la problématique c'est de manipuler un array (Ce qui est trèèèèèèèèèèèèèèèèèèèès loinnnnnnnnnnnnnnnnnn d'être clair dans la question)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MyArray=[1,2,"coucou",4,5];
    console.log(MyArray[0]);  // => 1
    console.log(MyArray[2]);  // => coucou
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut voila vode html css js
    https://codepen.io/paolo3/pen/KJwdez
    voila comme ca vous avez tout
    au fait récupéré sur un array ,enfin ,je suis pas sur si il sont stoker dans array ,si oui lequel

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut

    Exemple pour les cases cochées 24 26 et 30:
    results contient l'array : 24,26,30
    Si tu veux récupérer le 2ém, tu fais var recup2 = results[1] (donc égal 26).

    Si tu fais var StrTbl = results.join('|'); tu récupères une variable typée string de tout ton tableau results, séparé par le caractère | soit: 24|26|30
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut donc
    si j'ajoute ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      for (let box of allBoxes) 
      {
        if( box.checked )
    	  {
    		  results[ii] = Number(box.value);
    		  ii++;
          var recup2[ii] = results[ii]
    	  }
      }
    je fais comment pour afficher recup2[1]
    etc
    ce qui me brouille c'est ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show_results.innerHTML = '<b>' + results.join('</b>, <b>') + '</b>';
    je ne sais comment utiliser recup2 avec ca

  9. #9
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Re
    Citation Envoyé par giovanni Voir le message
    ........
    je fais comment pour afficher recup2[1]
    .........
    je ne sais comment utiliser recup2 avec ca
    Soit dans la console (F12 dans ton navigateur, onglet Console), tu ajoutes dans ton code à la suite, console.log('recup2[1] = ' + recup2[1]); ou bien le code alert('recup2[1] = ' + recup2[1]);, là une boite modale t'afficheras la valeur du 2ém éléments du tableau/array recup2.

    Tu pourrais, dans ton HTML avoir une div (par exemple) avec id="Aff", dans ce cas, toujours à la suite du code, document.getElementById('Aff').innerHTML = "recup2[1] = " + recup2[1];
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut je comprend pas
    donc dans le html je devrais inserer ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     alert('recup2[1] = ' + recup2[1])
    est dans javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      document.getElementById('Aff').innerHTML = "recup2[1] = " + recup2[1];
    si j'ai bien compris

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    si j'ai bien compris, donc dans le html je devrais inserer ça alert('recup2[1] = ' + recup2[1])

    Dans le HTML, pour avoir une sortie d'affichage <div id="Aff"></div>.
    La donnée a afficher se fait dans la partie <script> ...... </script> en y mettant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('Aff').innerHTML = "recup2[1] = " + recup2[1];
    console.log() et alert() sont 2 autres moyens d'avoir un affichage.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut ne marche pas
    mis le code dans html
    mais rien ne se passe
    code complet sur
    https://codepen.io/paolo3/pen/QYbWKR

    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
    <!DOCTYPE html>
    <html lang="en" >
     
    <head>
      <meta charset="UTF-8">
      <title>Grille 50. cases à cocher - full JavaScript</title>
     
      <div id="Aff"></div>
     
          <link rel="stylesheet" href="css/style.css">
     
     
    </head>
     
    <body>
     
      <h4>90 cases - full JavaScript</h4>
     
    <form id="form90cases" method="post" action="">
    	<p>
    		<button type="reset" name="btn-reset">Vider la grille</button>
    		<button type="button" name="btn-invert">Inverser la sélection</button>
     
    	</p>
    </form>
    <p>Les <span id="nbre-results"></span> cases cochées sont : <br /><span id="show-results"></span></p>
     
     
     
        <script  src="js2/index6.js"> </script>
       <script>
      document.getElementById('Aff').innerHTML = "recup2[1] = " + recup2[1];</script>
     
     
     
     
    </body>
     
    </html>

  13. #13
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par giovanni Voir le message
    [...] code complet sur https://codepen.io/paolo3/pen/QYbWKR [...]


    Il y a plusieurs erreurs.

    Particulièrement, une division (Aff) se met dans le tag body et pas dans le head ; pas de bouton "btn-envoi" ; la logique du code d'affichage des résultats et divers autres.

    Exemple corrigé :

    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
    <div id="Aff"></div>
     
    <h4>90 cases - full JavaScript</h4>
     
    <form id="form90cases" method="post" action="">
        <p>
            <button type="reset" name="btn-reset">Vider la grille</button>
            <button type="button" name="btn-invert">Inverser la sélection</button>
        </p>
        <p>
            <button type="submit" name="btn-envoi">Soumettre</button>
        </p>
    </form>
     
    <p>Les <span id="nbre-results"></span> cases cochées sont : <br /><span id="show-results"></span></p>


    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
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    window.addEventListener('load', ev => {
        // le DOM est construit et la page web est visible
     
        // début code du test
     
        // 0- création de la table - 50 cases
     
        let table = document.createElement('table');
        let tbody = table.createTBody();
     
        for (let row = 1; row <= 7; row++) {
            let tr = tbody.insertRow();
     
            for (let col = 1; col <= 6; col++) {
                let key = row + ((col - 1) * 7);
                let td = tr.insertCell();
                let label = document.createElement('label');
                let input = document.createElement('input');
     
                input.type = 'checkbox';
                input.name = 'cb[' + key + ']';
                input.value = key; // on met la clé en valeur
                label.append(key, input);
                td.append(label);
            }
        }
     
        document.getElementById('form90cases').prepend(table); // insert la table dans le formulaire
     
        // 1- checkbox
        let allBoxes = document.querySelectorAll('#form90cases input[type=checkbox]');
     
        allBoxes.forEach(function (box) {
            box.addEventListener('click', function () {
                //    box.parentNode.parentNode.classList.toggle('on');
                box.closest('td').classList.toggle('on');
                show_results();
            });
        });
     
        // 2- Reset (Vider la grille)
        let btnReset = document.querySelector('button[name="btn-reset"]');
     
        btnReset.addEventListener('click', function () {
            for (let box of allBoxes) {
                box.checked = false; // décoche la sélection
                box.removeAttribute('checked'); // décoche la sélection
                //    box.parentNode.parentNode.classList.remove('on');
                box.closest('td').classList.remove('on');
            }
            show_results();
        });
     
        // 3- inverser la sélection
        let btnInvert = document.querySelector('button[name="btn-invert"]');
     
        btnInvert.addEventListener('click', function () {
            for (let box of allBoxes) {
                box.checked = !box.checked;
                //    box.parentNode.parentNode.classList.toggle('on');
                box.closest('td').classList.toggle('on');
            }
            show_results();
        });
     
        // 4- Envoyer
        let btnEnvoi = document.querySelector('button[name="btn-envoi"]');
     
        btnEnvoi.addEventListener('click', function (ev) {
            ev.stopPropagation();
            ev.preventDefault();
     
            console.log(`Soumission interrompue, voir les résultats : `);
     
            let resultats = show_results();
     
            document.querySelector('#Aff').textContent = `Il y a ${ resultats[0] } nombres : ${ resultats[1].join(', ')}.`;
        }, {
            capture: false,
            passive: false,
            once: false
        });
     
        function compareNombres(a, b) {
            return a - b;
        }
     
        function show_results() {
            let
                show_results = document.getElementById('show-results'),
                nbre_results = document.getElementById('nbre-results'),
                ii = 0,
                results = [];
     
     
            for (const box of allBoxes) {
     
                if (box.checked) {
                    results.push(Number(box.value));
                    ii++;
                }
            }
     
            results.sort(compareNombres);
     
            show_results.textContent = results.join(', ');
            nbre_results.textContent = ii;
     
            return [ii, results];
        }
     
     
        // fin code du test
     
    }, {
        capture: false,
        passive: true,
        once: false
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  14. #14
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    REre
    J'ai repris le code complet de ton premier lien avec quelles-que modification, intégration du style et du script JavaScript.
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    <!DOCTYPE html>
    <html lang="en" >
     
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<title>Grille 50. cases à  cocher - full JavaScript</title>
    		<link rel="stylesheet" href="css/style.css">
    		<style>
                            #form90cases table {
                                    border-collapse: collapse;
                            }
                            #form90cases table td {
                                    padding: 0;
                                    border: 1px solid #ccc;
                                    text-align: center;
                                    color: #999;
                            }
                            #form90cases table td label {
                                    position:relative;
                                    display: inline-block;
                                    padding: 6px 10px;
                                    cursor:pointer;
                            }
                            #form90cases table td.on {
                                    color: green;
                                    font-weight: bold;
                                    background: #daf7a6;
                            }
                            /* on masque les checkbox */
                            #form90cases table td label input {
                                    position:absolute;
                                    z-index:-1;
                                    visibility:hidden;
                            }
                    </style>
      </head>
     
    	<body>
    		<h4>50 cases - full JavaScript</h4>
    		<form id="form90cases" method="post" action="">
    			<p>
    				<button type="reset" name="btn-reset">Vider la grille</button>
    				<button type="button" name="btn-invert">Inverser la sélection</button>
    			</p>
    		</form>
    		<p>Les <span id="nbre-results"></span> cases cochées sont : <br /><span id="show-results"></span></p>
    		<!-- <script  src="js2/index6.js"></script> -->
    		<script>
                            "use strict";
                            // ----------
                            // 0- création de la table - 50 cases
                            let table = document.createElement('table');
                            let tbody = table.createTBody();
                            for (let row = 1; row <= 7; row++) 
                            {
                                    let tr = tbody.insertRow();
                                    for (let col = 1; col <= 6; col++) 
                                    {
                                            let key = row + ((col-1) * 7);
                                            let td = tr.insertCell();
                                            let label = document.createElement('label');
                                            let input = document.createElement('input');
                                            input.type = 'checkbox';
                                            input.name = 'cb['+key+']';
                                            input.value = key; // on met la clé en valeur
                                            label.append(key, input);
                                            td.append(label);
                                    }
                            }
                            document.getElementById('form90cases').prepend(table); // insert la table dans le formulaire
                            // ----------
                            // 1- checkbox
                            let allBoxes = document.querySelectorAll('#form90cases input[type=checkbox]');
                            allBoxes.forEach(function(box) {
                                    box.addEventListener('click', function(){ 
                                    //    box.parentNode.parentNode.classList.toggle('on');
                                    box.closest('td').classList.toggle('on');
                                    show_results();
                                    });
                            });
                            // ----------
                            // 2- Reset (Vider la grille)
                            let btnReset = document.querySelector('#form90cases button[name="btn-reset"]');
                            btnReset.addEventListener('click', function(){ 
                                    for (let box of allBoxes) {
                                            box.checked = false; // décoche la sélection
                                            box.removeAttribute('checked'); // décoche la sélection
                                            //    box.parentNode.parentNode.classList.remove('on');
                                            box.closest('td').classList.remove('on');
                                    }
                                    show_results();
                            });
                            // ----------
                            // 3- inverser la sélection
                            let btnInvert = document.querySelector('#form90cases button[name="btn-invert"]');
                            btnInvert.addEventListener('click', function(){ 
                                    for (let box of allBoxes) {
                                            box.checked = !box.checked; 
                                    //    box.parentNode.parentNode.classList.toggle('on');
                                            box.closest('td').classList.toggle('on');
                                    }
                                    show_results();
                            });
                            // ----------
                            // 4- Envoyer
                            //let btnEnvoi = document.querySelector('#form90cases button[name="btn-envoi"]');
                            //btnEnvoi.addEventListener('click', function(){ 
                            //show_results();
                            //});
                            // ----------
                            function show_results(){
                                    let show_results = document.getElementById('show-results');
                                    let nbre_results = document.getElementById('nbre-results');
                                    let results = [];
                                    let ii = 0;
                                    for (let box of allBoxes) 
                                    {
                                            if( box.checked ){
                                                    results[ii] = Number(box.value);
                                                    ii++;
                                            }
                                    }
                                    results.sort(compareNombres); // ordre croissant
      
                                    // Affichage des résultats
                                    nbre_results.textContent = ii;
                                    //  show_results.textContent = results.join(', ');
                                    show_results.innerHTML = '<b>' + results.join('</b>, <b>') + '</b>';
                                    //  show_results.innerHTML = '<ul><li>' + results.join('</li><li>') + '</li></ul>'; // liste à  puces
                                    // ICI TA DEMANDE, pour exemple
                                    // avec une boite alert qui bloque le programme, pour voire il faut retirer les 2 /
                                    // alert("results[1] = " + results[1]);
                                    // avec console qui ne bloque pas le programme,
                                    // il faut faire F12 dans le navigateur et se placer onglet Console pour voire l'affichage
                                    console.log("results[1] = " + results[1]);
                                    
                            }
                            function compareNombres(a, b) { return a - b; } // permet de trier correctement les nombres
                    </script>
    </body>
     
    </html>
    La ligne 135 te permet de voire en console le 2ém élément du tableau results,
    si il n'y a qu'une case cochée, il affiche results[1] = undefined,
    par la suite, si au moins 2 cases cochées, il affiche le 2ém chiffre le plus petit coché,
    si tu coches par exemple 9, 17 et 25 il sera affiché results[1] = 17.

    Si tu veux afficher/récupérer l'élément 3 du tableau results tu écris results[2], pour l'élément 4, results[3], pour l'élément 5, results[4] ..........
    pour le premier éléments, results[0],
    pour le dernier élément, results[results.length-1].

    danielhagnoul a été plus vite que moi, ben cela fait de la lecture pour giovanni
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 113
    Par défaut merci
    la solution de danielhagnoul
    me convient mieux merci

  16. #16
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Lorsqu'on corrige un code, on se laisse souvent influencé par la structure du code existant, même lorsque l'on sait qu'il est imparfait. C'est le cas ici pour le paramètre ii qui est totalement inutile !

    Correction de mon code précédent :

    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
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    window.addEventListener('load', ev => {
        // le DOM est construit et la page web est visible
     
        // début code du test
     
        // 0- création de la table - 50 cases
     
        let table = document.createElement('table');
        let tbody = table.createTBody();
     
        for (let row = 1; row <= 7; row++) {
            let tr = tbody.insertRow();
     
            for (let col = 1; col <= 6; col++) {
                let key = row + ((col - 1) * 7);
                let td = tr.insertCell();
                let label = document.createElement('label');
                let input = document.createElement('input');
     
                input.type = 'checkbox';
                input.name = 'cb[' + key + ']';
                input.value = key; // on met la clé en valeur
                label.append(key, input);
                td.append(label);
            }
        }
     
        document.getElementById('form90cases').prepend(table); // insert la table dans le formulaire
     
        // 1- checkbox
        let allBoxes = document.querySelectorAll('#form90cases input[type=checkbox]');
     
        allBoxes.forEach(function (box) {
            box.addEventListener('click', function () {
                //    box.parentNode.parentNode.classList.toggle('on');
                box.closest('td').classList.toggle('on');
                show_results();
            });
        });
     
        // 2- Reset (Vider la grille)
        let btnReset = document.querySelector('button[name="btn-reset"]');
     
        btnReset.addEventListener('click', function () {
            for (let box of allBoxes) {
                box.checked = false; // décoche la sélection
                box.removeAttribute('checked'); // décoche la sélection
                //    box.parentNode.parentNode.classList.remove('on');
                box.closest('td').classList.remove('on');
            }
            show_results();
        });
     
        // 3- inverser la sélection
        let btnInvert = document.querySelector('button[name="btn-invert"]');
     
        btnInvert.addEventListener('click', function () {
            for (let box of allBoxes) {
                box.checked = !box.checked;
                //    box.parentNode.parentNode.classList.toggle('on');
                box.closest('td').classList.toggle('on');
            }
            show_results();
        });
     
        // 4- Envoyer
        let btnEnvoi = document.querySelector('button[name="btn-envoi"]');
     
        btnEnvoi.addEventListener('click', function (ev) {
            ev.stopPropagation();
            ev.preventDefault();
     
            console.log(`Soumission interrompue, voir les résultats : `);
     
            let resultats = show_results();
     
            document.querySelector('#Aff').textContent = `Il y a ${ resultats.length } nombres : ${ resultats.join(', ')}.`;
        }, {
            capture: false,
            passive: false,
            once: false
        });
     
        function compareNombres(a, b) {
            return a - b;
        }
     
        function show_results() {
            let
                show_results = document.getElementById('show-results'),
                nbre_results = document.getElementById('nbre-results'),
                results = [];
     
     
            for (const box of allBoxes) {
     
                if (box.checked) {
                    results.push(Number(box.value));
                }
            }
     
            results.sort(compareNombres);
     
            show_results.textContent = results.join(', ');
            nbre_results.textContent = results.length;
     
            return results;
        }
     
     
        // fin code du test
     
    }, {
        capture: false,
        passive: true,
        once: false
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2015, 09h52
  2. récupérer une valeur contenue dans une balise TD d'un tableau
    Par Himotep dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2011, 22h48
  3. Réponses: 10
    Dernier message: 05/02/2008, 14h37
  4. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 15h56
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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