Quiz

Résolu
Bonjour à tous. Dans le cadre d'un exercice je dois réaliser un quiz. J'ai donc fais la structure en html avec des boutons radios, plusieurs options mais un choix possible. Mais je coince sur l'écriture du javascript. J'aimerais en fait récupérer les réponses données par l'utilisateur et afficher, où une fenêtre bonne ou mauvaise réponse, et, en dessous de la question, insérer une li avec la réponse. En remerciant par avance les personnes qui prendront le temps de me lire.

4 réponses

  1. Mais du coup comment mettre un événement différent, selon si la personne à cliqué sur la bonne ou sur la mauvaise réponse? En fait c'est pour ça que je pensé partir sur une boucle et une condition.
    1. Modérateur
      Tu récupères la valeur de la case selectionnée ... donc à toi de la comparer avec la valeur attendue.
      Si elle sont identique = bonne réponse .. sinon réponse fausse.

      Pour le coup, là tu peux utiliser un tableau ( un array ) pour y stocker les réponses attendues pour chaque question...
    2. @jordane45C'est pour ça que j'avais stocké mes constantes au départ mais je suis pas sûr d'avoir pris les bonnes. Pour récupérer du coup le tableau il faut que j'utilise la méthode JSON.parse et le stringify?
    3. Modérateur
      @TitanMaIl suffit que tu vérifies que l'élément coché
      document.querySelector('input[name="choix"]:checked')
      

      contient la classe .rj

      Via un code du genre
      element.classList.contains(class);
      

      https://developer.mozilla.org/en-US/docs/Web/API/Element/classList

      Ou via une fonction que tu peux te créer, du style
      function hasClass(element, className) {
          return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;
      }
      

      et que tu peux utiliser dans ton code comme ceci:
      
      function hasClass(element, className) {
          return (' ' + element.className + ' ').indexOf(' ' + className+ ' ') > -1;
      }
      
      document.getElementById("rep1").addEventListener("click", function(){
       var elm= document.querySelector('input[name="choix"]:checked');
       var isRj = hassClass(elm,"rj");
        if ( isRj ) {
          alert ('Bonne réponse');
       } else 
         alert ('Mauvaise réponse');
       }
      
      });
      


      Toujours pas besoin de tes constantes de départ ni de boucle
    4. @jordane45Nickel du coup je n'ai plus qu'à remplacer la fonction alert par mon createElement pour l'incorporé?

      Et j'ai une dernière question. Dans ta fonction les éléments sont des objets déjà existant dans la bibliothèque javascript et donc des éléments à connaitre pour coder plus facilement?
    5. Modérateur
      @TitanMaComme pour chaque langage ...
      Plus tu connais les fonctions disponibles...mieux tu codes...

      Dis toi aussi que le DOM ( la page web...) est fabriquée à partir d'objets ( les input, les div, les textarea, .. etc...)
      Chaque élément hml est un objet qui a des propriétés (ici, on parlera d'attribut ) ( l' ID, le NAME, la (ou les) CLASS ... )
      La liste est disponible ici : https://developer.mozilla.org/fr/docs/Web/API/Element