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 :

Créer des slides pour un QCM


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Points : 24
    Points
    24
    Par défaut Créer des slides pour un QCM
    Bonjour à toutes et à tous,

    Je mets en place un QCM pour tester mes élèves.
    Pour cela j'ai créé plusieurs flexboxes avec différents calculs ainsi qu'un bouton pour valider la réponde et passer à la slide suivante.
    Voici un extrait du code HTML :
    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
        <div class="quizz_window quizz_window_1">
          <p><u>Question n°1 :</u><br />
            Calculer : <br />
            <span id="alea"></span> <span id="nombre1"></span> <span id="operation1"></span> <span id="nombre2"></span> <span id="operation2"></span> <span id="nombre3"></span> =
          </p>
     
          <button id="quizz_button" onclick="suivant()" onclick="relatifs5()">
            <p>Valider</p>
          </button>
        </div>
        <div class="quizz_window quizz_window_2">
          <p><u>Question n°2 :</u><br />
            Calculer : <br />
            <span id="alea"></span> <span id="nombre1"></span> <span id="operation1"></span> <span id="nombre2"></span> <span id="operation2"></span> <span id="nombre3"></span> =
          </p>
     
          <button id="quizz_button" onclick="suivant()" onclick="relatifs5()">
            <p>Valider</p>
          </button>
        </div>

    et ça c'est le javascript que j'essaie de créer (mais qui ne fonctionne pas du tout...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function suivant() {
      const flexboxes = document.querySelectorAll(".quizz_window_");
     
      let currentFlexboxIndex = 0;
     
      flexboxes[currentFlexboxIndex].classList.add('hidden');
      currentFlexboxIndex++;
      if (currentFlexboxIndex >= flexboxes.length) {
        currentFlexboxIndex = 0;
      }
     
      flexboxes[currentFlexboxIndex].classList.remove('hidden');
    }
    Si quelqu'un à une solution, je suis preneur !
    Merci d'avance !!

  2. #2
    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,

    Début d'idée: si tu doubles l'attribut onclick, le 2e sera inopérant.

    "mais qui ne fonctionne pas du tout..." est tout de même un peu tabou sur ce forum:

    1) Que souhaites-tu obtenir comme résultat?
    2) Qu'est-ce qui se produit d'inattendu?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Quand je dis qu'il ne fonctionne pas du tout, c'est simplement qu'il ne se passe rien quand je clique sur mon bouton.

    La flexbox suivante n'apparait pas et l'actuelle ne disparaît pas..
    Alors que je souhaiterais que sur chaque flexbox il y ait un bouton "Valider" qui permette de passer à la flexbox suivante.

  4. #4
    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
    Citation Envoyé par Latulipe2 Voir le message
    je souhaiterais que sur chaque flexbox il y ait un bouton "Valider" qui permette de passer à la flexbox suivante.
    Par quel miracle?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    C’est bien la question ^^
    Je me demandais justement s’il existait une fonction js me permettant de passer de la diapo1 à la diapo2, de la diapo2 à la diapo3, et ainsi de suite, sans avoir à retaper mon code à chaque fois.
    Mais si cela relève du miracle, je vais prendre mon courage à deux mains et écrire toutes les lignes de code une à une…

  6. #6
    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
    Bah moi ce que je voulais dire c'est que rien dans ton code ne faisait mention d'un bouton "valider".

  7. #7
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 722
    Points : 1 607
    Points
    1 607
    Par défaut
    jour

    il manque la boucle

  8. #8
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Tu désires faire un truc comme ça...?
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div class="quizz_window">
            <p><u>Question n°1 :</u><br />
              Calculer : <br />
              <span id="alea"></span> <span id="nombre1"></span> <span id="operation1"></span> <span id="nombre2"></span> <span id="operation2"></span> <span id="nombre3"></span> =
            </p>
     
            <button class="quizz_button">
              <p>Valider</p>
            </button>
          </div>
          <div class="quizz_window">
            <p><u>Question n°2 :</u><br />
              Calculer : <br />
              <span id="alea"></span> <span id="nombre1"></span> <span id="operation1"></span> <span id="nombre2"></span> <span id="operation2"></span> <span id="nombre3"></span> =
            </p>
     
            <button class="quizz_button">
              <p>Valider</p>
            </button>
          </div>
     
          <div class="quizz_window">
            <p><u>Question n°3 :</u><br />
              Calculer : <br />
              <span id="alea"></span> <span id="nombre1"></span> <span id="operation1"></span> <span id="nombre2"></span> <span id="operation2"></span> <span id="nombre3"></span> =
            </p>
     
            <button class="quizz_button">
              <p>Valider</p>
            </button>
          </div>
     
     
          <script>
          let flexboxIndex = 0;
          const flexboxes = document.getElementsByClassName("quizz_window");
          const ListButtons = document.getElementsByClassName("quizz_button");
     
          Array.prototype.forEach.call(ListButtons,elt=>elt.addEventListener('click',suivant));
     
          function suivant(e) {
            if (e.currentTarget==ListButtons[flexboxIndex]){
              flexboxIndex++;
              flexboxes[flexboxIndex-1].style.display='none';
              //ou si tu veux garder l'espace :flexboxes[flexboxIndex-1].style.visibility='hidden';
            }else return;
          }
        </script>
    </body>
    </html>

    Rq: je n'ai pas touché aux span pour reprendre une partie de ton code mais un identifiant est unique à un élément et tu multiplies le même identifiant pour plusieurs span donc utilise plutôt une classe...comme pour les button.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2022
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2022
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Petite mise à jour,
    J'ai réussi mes slides, j'avais juste besoin d'une fonction comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function openclose(a, b) {
      let ouvrir = document.getElementById(a);
      let fermer = document.getElementById(b);
     
      if (ouvrir.style.display != "flex") {
        ouvrir.style.display = "flex";
        fermer.style.display = "none";
      } else {
        ouvrir.style.display = "none";
      }
    }
    et dans mon HTML, je devais noter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    openclose('quizz_window_2','quizz_window_1')
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    openclose("quizz_window_2","quizz_window_1")

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

Discussions similaires

  1. [MooTools] fonctionnalités intéressantes pour créer des slides ?
    Par krefft dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 18/11/2008, 11h16
  2. WinDev 9 : Créer des sons pour un piano
    Par jbidou88 dans le forum WinDev
    Réponses: 1
    Dernier message: 20/08/2007, 14h48
  3. Réponses: 2
    Dernier message: 09/02/2007, 18h47
  4. Créer des bordures pour un JLabel
    Par theniaky dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/05/2006, 19h18
  5. Réponses: 2
    Dernier message: 04/08/2005, 19h00

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