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 :

Comprendre le bout de code


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut Comprendre le bout de code
    Bonjour,

    Je suis nouveau dans le js et j'ai pioché un bout de code qui à pour fonction de masqué et afficher du texte.

    Je vous transmet le html et le js pour que vous m'aidiez a comprendre le js.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      <h2 class="sous-titre">What is Frontend Mentor, and how will it help me?</h2><button type="button" onclick="toggle_div(this, 'lire1');" title="Afficher la suite">+</button>
     
      <p class="text"><div id="lire1" style="display:none">Frontend Mentor offers realistic coding challenges to help developers improve their 
      frontend coding skills with projects in HTML, CSS, and JavaScript. It's suitable for 
      all levels and ideal for portfolio building.</div></p>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function toggle_div( btn, id_div )
    {
      btn.innerHTML = (btn.innerHTML == '+')? '-' : '+';
      btn.title = (btn.title == 'Afficher la suite')? 'Masquer la suite' : 'Afficher la suite';
      document.getElementById( id_div ).style.display = (document.getElementById( id_div ).style.display == 'none')? 'block' : 'none';
    }
    J'ai bien compris qu'on déclare une variable nommée toggle_div qui prend en paramètre btn(d'où vient-il) et les id de toutes les div. Ensuite btn.innerHTML je n'ai pas compris(je connais innerHTML mais d'où vient btn?), est égal a btn.innerHTML strictement égal à +. ensuite on définit que si c'est + on affiche - et inversement?

    La ligne suivante est globalement la même mais pour le texte affiché au survol du +.

    Ensuite on récupère les id des div et style.display je n'ai pas compris, est égal à la récupération des id des div avec encore une fois style?display strictement égal à none, et le "?" ainsi que le reste cela reste un mystère pour moi.

    Mes interrogations sont peut être bête mais je suis nouveau dans le js et j'ai besoin d'éclaircissement pour avancer.

    Je mes aussi en une photo du résultat qui est celui demandé.Nom : image_2024-01-17_153542259.png
Affichages : 192
Taille : 49,7 Ko

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 654
    Par défaut
    Citation Envoyé par CharlieVan Voir le message
    on déclare une variable nommée toggle_div qui prend en paramètre btn(d'où vient-il)
    la fonction "toggle_div" a 2 arguments. cela veut dire qu'au moment de l'appel de la fonction, la valeur du 1er argument va se trouver dans "btn" et la valeur du 2e argument sera récupérable dans la variable "id_div".

    pour le ?, c'est un opérateur dont le fonctionnement est expliqué ici :
    https://developer.mozilla.org/fr/doc...ional_Operator

  3. #3
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 250
    Par défaut
    Ensuite btn.innerHTML je n'ai pas compris(je connais innerHTML mais d'où vient btn?)
    c est une notation qui permet de cibler des boutons

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    const btn=document.querySelector('button');

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut opérateur ? et btn
    Je vous remercie j'ai compris "?"

    Pour le btn je n'ai jamais déclarer de variable btn c'est pour cela que je me demande quelle information cela renvoie

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 492
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 492
    Par défaut
    btn sera le nom de la variable "locale" a la fonction

    par exemple
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function afficheText(msg) {
    alert(msg);
    }
    afficheText('coucou');
    dans mon exemple, mon argument (variable locale s'appelle "msg", mais tu peux l'apeller comme tu veux)
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function afficheText(toto) {
    alert(toto);
    }
    afficheText('coucou');
    aura le meme resultat
    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 !

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut btn.innerHTML
    Si j'ai bien compris innerHTML me permet de créer du contenu HTML sauf que la se n'est pas le cas, si?

    est ce que sa voudrait dire que je créer l'élément html btn?

    J'ai fais ça a la suite pour vérifier un truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let bouton = btn.innerHTML
        bouton.addEventListener("click", ()=>{
            console.log("btncliqué")
        })
    Et quand je clique sur le bouton et vais dans la console rien ne s'affiche

    J'ai vraiment du mal avec le btn.innerHTML

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut
    Citation Envoyé par Doksuri
    ...
    Donc est il possible de m'expliquer btn.innerHTML, j'ai bien compris que btn c'est ma variable créer avec ma fonction

  8. #8
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 492
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 492
    Par défaut
    toute balise est compose d'autres balises... qui n'est rien autre que du HTML
    par exemple <button><span>toto</span></button> genere un bouton avec un span dedant qui content la chaine de caractere "toto"

    en javascript, il y a 2 manieres de populer dynamiquement un element : soit en creant des balises a la main avec document.createElement(), puis en ajoutant ces balises a l'element

    soit en disant au navigateur : voici directement le code HTML a ajouter (avec innerHTML)

    donc pour ton bouton btn.innerHTML = (btn.innerHTML == '+')? '-' : '+'; ca dit juste : voici le HTML pour la variable btn

    mais la ou ca se complique, c'est que le contenu, est lui-meme compose d'un operateur ternaire (syntaxe courte d'un if/else)
    ce meme bout de code aurai pu etre ecrit de la sorte :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(btn.innerHTML == '+') { // si le contenu HTML du bouton est "+" alors....
      btn.innerHTML = '-'; // le contenu HTML du bouton est maintenant "-"
    } else { // sinon
      btn.innerHTML = '+'; // le contenu HTML du bouton est mainteannt "+"
    }
    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 !

  9. #9
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 250
    Par défaut
    A mon humble avis ce code est tarabiscoté tu peux faire simple surtout si tu débutes

    voila du savoir :


    je pense qu il est judicieux que tu écrives ton code plutot que de copier coller du code obtenu sur le net.
    fusse t il du code poubelle j applique la meme methode

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut
    Citation Envoyé par Doksuri
    ...

    Merci pour ton explication détaillée et pédagogue j'ai compris cette partie la

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut
    Citation Envoyé par labarre2002
    ...
    Je vais essayer, la j'essaie de fermer un bouton quand un autre est ouvert et j'ai d'autre complication

  12. #12
    Membre chevronné
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 387
    Par défaut
    btn.innerHTML = (btn.innerHTML == '+')? '-' : '+'; ==> toggle.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 458
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    let bouton = btn.innerHTML
        bouton.addEventListener("click", ()=>{
            console.log("btncliqué")
        })
    btn.innerHTML est une propriété de btn. C'est une chaine de caractères.
    Tu peux tester pour t'en convaincre
    Ce n'est pas du tout un élément HTML.
    Tu ne peux donc pas poser un écouteur dessus.

  14. #14
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2024
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2024
    Messages : 10
    Par défaut
    Je te remercie ce morceau de code est comme mon ancien mais en utilisant d'ancien terme
    Seulement voila, ca ne fonctionne que sur mon premier bouton
    J'ai aussi essayer en récupérant les class monBouton mais j'arrive au même résultat. La question étant, pourquoi çà ne compte que mon premier bouton au lieu de cibler tout les bouton?

  15. #15
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Salut CharlieVan,

    S'il y a que le premier bouton qui fonctionne, le souci doit venir du nom de l'ID 'lire1' qui est certainement déclaré plusieurs fois. Pour rappel un nom d'ID doit être unique.
    J'ai repris et modifié un peu ton code pour l'exemple.

    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
    <body>
        <h2 class="sous-titre">What is Frontend Mentor, and how will it help me?</h2>
        <button type="button" onclick="toggle_div(this, 'lire1');" title="Afficher la suite">+</button>
        <p class="text">
        <div id="lire1" style="display:none">Ici le texte 1</div>
        </p>
     
        <h2 class="sous-titre">Is Frontend Mentor free ?</h2>
        <button type="button" onclick="toggle_div(this, 'lire2');" title="Afficher la suite">+</button>
        <p class="text">
        <div id="lire2" style="display:none">Ici le texte 2</div>
        </p>
     
        <h2 class="sous-titre">Can I use Frontend Mentor projects in my portfolio?</h2>
        <button type="button" onclick="toggle_div(this, 'lire3');" title="Afficher la suite">+</button>
        <p class="text">
        <div id="lire3" style="display:none">Ici le texte 3</div>
        </p>
    </body>

    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
            function toggle_div(btn, id_div) {
                btn.innerHTML = (btn.innerHTML == '+') ? '-' : '+';
                btn.title = (btn.title == 'Afficher la suite') ? 'Masquer la suite' : 'Afficher la suite';
                document.getElementById(id_div).style.display = (document.getElementById(id_div).style.display == 'none') ? 'block' : 'none';
     
                // Ou comme cela
                // if (btn.innerText == '+') {
                //     btn.innerText = '-'
                //     btn.title = 'Masquer la suite'
                //     document.getElementById(id_div).style.display = 'block'
                // } else {
                //     btn.innerText = '+'
                //     btn.title = 'Afficher la suite'
                //     document.getElementById(id_div).style.display = 'none'
                // }
            }

Discussions similaires

  1. Besoin de comprendre un bout de code
    Par aicha84 dans le forum Autres langages
    Réponses: 2
    Dernier message: 09/04/2021, 20h54
  2. Comprendre un bout de code
    Par lejimi dans le forum Débuter
    Réponses: 2
    Dernier message: 16/06/2015, 10h03
  3. Comprendre un bout de code
    Par Juliendu92 dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/02/2015, 09h03
  4. Besoin d'aide pour comprendre ce bout de code
    Par sorry60 dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 21/03/2009, 16h44
  5. Comprendre un bout de code
    Par MohEllayali dans le forum OpenCV
    Réponses: 1
    Dernier message: 27/06/2008, 13h48

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