Alerte Console JS

Salutations,

Je suis en train de terminer un programme et en le testant, il fonctionne bien au début, mais au bout d'un moment, la console m'affiche ceci. Qu'est ce que cela veut dire, svp ?

SI quelqu'un à une solution claire et surtout rapide, avant demain 18h, cela me serait d'une aide considérable, svp

Merci beaucoup

N

<!DOCTYPE html>
<html>
    <head>
        <title>Questions pour un Champion</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.13.0/css/all.css">
    </head>
    <body>
        <div class="container-fluid">

            <div class="row">
                <div class="col">
                    <div class="alert alert-danger" role="alert" style="text-align: center;font-weight: bold;">
                        <h1>MAX À LA SUITE</h1>
                        <button class="btn btn-warning" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
                            <i class="fas fa-hand-sparkles"></i> Règles
                        </button><br/>
                        <div class="collapse" id="collapseExample" style="margin-top: 10px">
                            <div class="alert alert-warning" style="text-align: justify">
                                4 thèmes sont proposées. L'équipe éliminée à la manche précédente choisira le thème pour chaque équipe en course. 
                                Les joueurs de l'équipe répondront à tour de rôle.
                                Les questions sont posées aléatoirement. Chaque réponse apporte 1 point. En cas de mauvaise réponse, 
                                le score retombe à 0 et ne sera conservé que le score affiché en fin de chrono. Le but est d'avoir
                                le plus de points à la suite, avant la fin de la liste de 11 questions, le tout en 180 secondes ou moins. 
                                 La difficulté résidera dans le fait que 
                                les 3 équipes vont devoir enchainer sans pause.
                                En cas d'égalité, un jeu décisif aléatoire sera proposé. 
                                Les 2 équipes ayant réalisé les meilleures performances seront qualifiées pour la manche finale.
                            </div>
                        </div>
                       
                    </div>
                </div>

            </div>
            <div class="row">
                <div class="col">
                    <button id="themesAleatoires" class="btn btn-info" type="button"><i class="fas fa-list-ol"></i> 4 Thèmes</button>
                    <br/><br/>
                    <div id="themes"></div>
                </div>
                <div class="col">
                    <table class="table table-striped table-bordered">
                        <thead>
                            <tr class="table-success">
                                <th>ÉQUIPES QUALIFIÉES + JOUEUR A, B, C</th>
                                <th>SCORE</th>
                                <th>COMPTEUR</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>1ère Équipe Qualifiée
                                    <input></td>
                                <td><span id="compteur1"><b>0</b></span></td>
                                <td>
                                    <button class="btn btn-success compteur" value="1|1" type="button"><i class="fas fa-plus"></i> 1</button> 
                                    <button class="btn btn-danger mise0" value="1|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                </td>
                            </tr>
                            <tr>
                                <td>2ème Équipe Qualifiée
                                    <input></td>
                                <td><span id="compteur2"><b>0</b></span></td>
                                <td>
                                    <button class="btn btn-success compteur" value="2|1" type="button" ><i class="fas fa-plus"></i> 1</button> 
                                    <button class="btn btn-danger mise0" value="2|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                </td>
                            </tr>
                            <tr>
                                <td>3ème Équipe Qualifiée
                                    <input></td>
                                <td><span id="compteur3"><b>0</b></span></td>
                                <td>
                                    <button class="btn btn-success compteur" value="3|1" type="button"><i class="fas fa-plus"></i> 1</button> 
                                    <button class="btn btn-danger mise0" value="3|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>

            <div class="row">
                <div class="col">
                    <div id="theme" class="alert alert-primary" role="alert">Thème...</div>
                    <table class="table table-borderless">
                        <tbody>
                            <tr>
                                <td><button id="questionButton" class="btn btn-warning" type="button"><i class="far fa-comment-dots"></i> Question</button></td>
                                <td><div id="question"></div></td>
                            </tr>
                            <tr>

                                <td><button id="reponseButton" class="btn btn-primary" type="button"><i class="far fa-lightbulb"></i> Réponse</button></td>

                                <td><div id="reponse"></div></td>
                                <td><button id="stopChrono" class="btn btn-primary" type="button" style="background-color:red;"><i class="far fa-stop-circle"></i> Stop</button></td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="col">
                    <div class="alert alert-danger" role="alert" style="text-align:center;">
                        <b>Temps restant :</b><br>
                        <b><span id="quiJoue" style="font-size: 20px; color:navy"> doit jouer</span></b>

                    </div>
                    <div class="jumbotron" style="text-align:center;font-size:2em;font-weight:bold">
                        <span id="countdown_sec">0 secondes</span>
                    </div>
                </div>
            </div>
            <div>
                <div class="col">
                    <table class="table table-borderless">
                        <tbody>
                            <tr>
                                <td><div id="decisif" class="alert alert-primary" role="alert">Jeu décisif</div></td>
                                <td><button id="jeuDecisif" class="btn btn-warning" type="button" style="background-color:hotpink;"><i class="far fa-handshake"></i> Jeu</button></td>
                                <td><button id="reglejd" style="background-color:lightgray"><i class="fas fa-hand-sparkles"></i> Règles</td>
                                <td><button id="quiJoueJD" style="background-color:lightgreen"><i class="fab fa-playstation"></i> Qui joue ?</td>
                                <!-- <td><button id="chronometre" class="btn btn-warning" type="button" style="background-color:burlywood;"><i class="fas fa-stopwatch"></i> Chrono</button></td>
                                <td><button id="stopChrono" class="btn btn-warning" type="button" style="background-color:palevioletred;"><i class="far fa-stop-circle"></i> Stop</button></td>
                                <td><button id="back0Chrono" class="btn btn-warning" type="button" style="background-color:silver;"><i class="fas fa-undo-alt"></i> Mise à 0</button></td> -->
                            </tr>
                        </tbody>
                    </table>
                    <!-- <div class="alert alert-danger" role="alert" style="text-align:center;">
                        <b>Temps :</b>
                    </div>
                    <div class="jumbotron" style="text-align:center;font-size:2em;font-weight:bold">
                        <span id="countup_sec">0 secondes</span> -->
                    </div>
                </div>
            </div>
            
        </div>
        <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
        <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
        <!-- <script src="""></script> -->
        <script>
            $(document).ready(function () {//n'apparait qu'une fois//

                var chrono; // gestion du chrono
                var decompteLance = 'non'; // pour empêcher le bouton Question de lancer plusieurs fois le chrono
                var aleatoire; // nombre aléatoire
                var themes = []; // affichage de 4 thèmes aléatoires
                var numTheme = ''; // thème choisit
                var questions = []; // questions déjà posées
                //var precedente = null; // question/réponse précédente

                

                // Affichage de 4 thèmes aléatoires
                $('#themesAleatoires').on('click', function () {
                    $('#themes').text(''); // vide la liste des thèmes
                    themes = []; // vide le tableau de mémorisation des thèmes
                    choixThemes(); // recherche 4 thèmes de façon aléatoire
                    afficheThemes(); // affiche les 4 thèmes
                });

                // Choix d'un thème particulier (grise le bouton et le desactive)
                // la syntaxe d'appel est différente car les boutons de choix n'existent pas encore au chargement de la page
                $(document).on('click', '.choisirTheme', function () {
                    numero = $(this).attr('value');
                    numTheme = themes4alasuite[numero][0]; // mémorise le numéro du thème choisit
                    theme = themes4alasuite[numero][1]; //
                    $('#theme').text('THEME : ' + theme); // affiche le thème choisi en-dessous du bouton Question
                    $(this).css('background-color', 'grey'); // colore le bouton en gris
                    $(this).attr('disabled', 'disabled'); // désactive le bouton
                    
                });

                $('#questionButton').on('click', function () {
                    if (numTheme === '') {
                        alert("Choisissez d'abord un thème");
                     timerManager.start();
                    } else {
                        if (decompteLance === 'non') {
                            $secondes = 120; // définit le nombre de secondes
                            $('#countdown_sec').text($secondes); //affiche 50 dans le chrono
                             timerManager.start($secondes); // lance le timer
                            decompteLance = 'oui';
                            
                        }
                        $("#reponse").text(""); 
                        question();
                    }
              
                });


                function question() {
                 
                    var min = 0;
                    var max = 12;
                    aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
                    if (questions.length === max) {
                        alert('Toutes les questions ont été posées !');
                    } else if ($.inArray(parseInt(aleatoire), questions) === -1) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
                        quest = listeQuestions[numTheme][aleatoire][1];
                        $('#question').text(quest); // affiche la nouvelle question
                        questions.push(aleatoire); // rempli le tableau des questions déjà posées
            console.log(questions);
           

            
          } else function question() {
            // rappelle la fonction pour trouver un nouveau nombre aléatoire non utilisé
            
          }
        }
        $("#reponseButton").on("click", function () {
          $("#reponse").text(listeQuestions[numTheme][aleatoire][2]); // affiche la réponse
          
             });
            
                
               

                // Ajoute des points à une équipe
                $('.compteur').on('click', function (e) {
                    e.preventDefault();
                    $val = $(this).attr('value').split('|');
                    $champ = '#compteur' + $val[0];
                    $new_score = parseInt($($champ).text()) + parseInt($val[1]);
                    if ($new_score < 0) {
                        $('#compteur' + $val[0]).text('0');
                    } else if ($new_score <= 10) {
                        $('#compteur' + $val[0]).text($new_score);
                    } else {
                        $('#compteur' + $val[0]).text('ÉQUIPE QUALIFIÉE')
                       
                    }

                });

                // Remet le nombre de points d'une équipe à zéro
                $('.mise0').on('click', function () {
                    $val = $(this).attr('value').split('|');
                    $champ = '#compteur' + $val[0];
                    console.log("CHAMP", $champ);
                    $($champ).text('0');
                });

                // Recherche 4 thèmes de façon aléatoire
                function choixThemes() {
                    var min = 0;
                    var max = 20;
                    aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
                    if ($.inArray(parseInt(aleatoire), themes) === -1) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
                        themes.push(aleatoire); // rempli le tableau des thèmes déjà choisis
                    }
                    if (themes.length < 4) { // relance la function tant qu'on n'a pas 4 thèmes
                        choixThemes();
                    }
                }

                // Affiche, sous forme de boutons, les thèmes trouvés
                function afficheThemes() {
                    $.each(themes, function (index, value) {
                        
                        $('#themes').append('<button class="btn btn-danger choisirTheme" value="' + value + '" type="button" >');
                        $('#themes').append(' ' + themes4alasuite[value][1] + '</br>');
                        $('#themes').append('</button>');
                     
                    });
                }

                // Affiche une question aléatoire dans le thème choisi
                



             $('#stopChrono').on('click', function () {
                $("#countdown_sec").text("0");
                timerManager.stop("0")
             });
        



              
                // A corriger
                
                // Le  chrono doit s'enclencher dès que l'on pose la première question, se remettre à 50 lors d'un nouveau thème
             
                
                

                timerManager = {
                    start: function ($secondes) {


                        if ($secondes >= 0) { // tant que le chrono est supérieur à zéro
		if ($secondes >= 81) {
  $('#quiJoue').text('Equipe 1 ' + 'doit jouer');
} else if ($secondes >= 41) {
  $('#quiJoue').text('Equipe 2 ' + 'doit jouer');
} else {
  $('#quiJoue').text('Equipe 3 ' + 'doit jouer');
} 

$secondes = $secondes - 1; 





                            chrono = setTimeout(function () { // éxécute le code toutes les 1000 millisecondes
                                $('#countdown_sec').text($secondes); // affiche le temps restant
                                timerManager.start($secondes); // rappelle la fonction
                            }, 1000);
                        } else {
                            timerManager.stop(); // arrête le chrono
                        }
                    },
                    stop: function () { // to be called when you want to stop the timer
                        clearTimeout(chrono);
                        $('#countdown_sec').text('0');
                        $("#theme").text("THEME :" + "");
                        $("#question").text("");
                        $("#reponse").text("");
                        $("#quiJoue").text("doit jouer");
                    }
                };


9 réponses

Résumé de la discussion

Un script JavaScript pilote un jeu-questionnaire en ligne et le chronomètre semble fonctionner correctement au départ mais se détraque après une série de dix questions, provoquant des comportements inattendus. Les échanges suggèrent que le problème vient du mécanisme de génération aléatoire et de la gestion du temps, notamment le redémarrage du chrono et le passage d'un thème à l'autre. La meilleure réponse conseille de s'appuyer sur des ressources JavaScript, notamment la documentation sur les fonctions, et les réponses utiles mentionnent des étapes de débogage et de réinitialisation du timer. En parallèle, des modifications proposées incluent optimiser la logique de question/score et s'assurer que les compteurs et le chronomètre se réinitialisent correctement lors du changement de thème.

Bobot (l’IA à votre service)
  1. Contributeur

    bonjour,

    as-tu fait le lien entre le message d'erreur et la ligne de code?

    quand tu partages le contenu d'un fichier, peux-tu préciser le nom du fichier?

    1. Euh... J'ai juste compris que ca foire à cet endroit... Mais ce que je ne comprends pas, c'est que pour les premières questions, ça fonctionne, et après... (Il y a 11 questions pour chaque thème)

      function question() {
                       
                          var min = 0;
                          var max = 12;
                          aleatoire = Math.floor(Math.random() * (max - min)) + min;
                          if (questions.length === max) {
                              alert('Toutes les questions ont été posées !');
                          } else if ($.inArray(parseInt(aleatoire), questions) === -1) { 
                              quest = listeQuestions[numTheme][aleatoire][1]; // FOIRAGE
                              $('#question').text(quest); 
                              questions.push(aleatoire); 
                  console.log(questions);
                 
      1. Contributeur

        Quelle est la valeur de la variable "aleatoire" au moment où cela foire?

      2. @yg_be
        var min = 0;
                            var max = 12;
                            aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
                            if (questions.length === max) {
                                alert('Toutes les questions ont été posées !');
                            } else if ($.inArray(parseInt(aleatoire), questions) === -1) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
                                quest = listeQuestions[numTheme][aleatoire][1]; // FOIRAGE
                                $('#question').text(quest); // affiche la nouvelle question
                                questions.push(aleatoire); // rempli le tableau des questions déjà posées
                    console.log(questions);
                   
        
                    
                  } else function question() {
                    // rappelle la fonction pour trouver un nouveau nombre aléatoire non utilisé
                    
                  }
                }
                $("#reponseButton").on("click", function () {
                  $("#reponse").text(listeQuestions[numTheme][aleatoire][2]); // affiche la réponse
                  
                     });

        Je ne sais pas si ça répond à ta question...

        Sinon, ça loupe très aléatoirement. J'ai refais le test plusieurs fois:

        une fois c'est à la question 7, une autre à la 9, encore une autre à la 6... 

        De plus, quand je choisi un nouveau thème, c'est ce même bug,.. En plus, la question ne s'affiche pas correctement et la réponse n'est pas correctement donnée... Peut-être est-ce lié...

      3. Contributeur
        @Nirsab

        Modifie ton code pour obtenir la  valeur de la variable "aleatoire" dans la console.

      4. @yg_be

        Alors: Chose faite. cela donne ça. Normalement je devrais cliquer une fois sur le bouton 'question', et dès que j'ai cette alerte en rouge, ca foire... pour avoir la Q6, j'ai dû m'exciter sur la souris... Et aussi, il arrive que le bouton 'réponse' ne donne pas la réponse correspondante à la question.

        Et même délire dès que je change de thème où là, le bouton question ne fonctionne pas... 

        var min = 0;
                            var max = 12;
                            aleatoire = Math.floor(Math.random() * (max - min)) + min;      if (questions.length === max) {
                                alert('Toutes les questions ont été posées !');
                            } else if ($.inArray(parseInt(aleatoire), questions) === -1) { 
                                quest = listeQuestions[numTheme][aleatoire][1]; // FOIRAGE
                                console.log(aleatoire); // MODIFICATION
                                $('#question').text(quest); 
                                questions.push(aleatoire); 
                    console.log(questions);
                   
        
                    
                  } else function question() {
                    
                    
                  }
                }
                $("#reponseButton").on("click", function () {
                  $("#reponse").text(listeQuestions[numTheme][aleatoire][2]);
                  
                     });
      5. Contributeur
        @Nirsab

        Moi, si je voulais avoir la valeur d'une variable au moment où cela foire, je mettrais le console.log() avant la ligne où cela foire, pas après.

        En passant, penses-tu que ta ligne 14 est correcte?

    2. $('#questionButton').on('click', function () {
                          if (numTheme === '') {
                              alert("Choisissez d'abord un thème");
                           timerManager.start();
                          } else {
                              if (decompteLance === 'non') {
                                  $secondes = 120; 
                                  $('#countdown_sec').text($secondes); 
                                   timerManager.start($secondes);
                                  decompteLance = 'oui';
                                  
                              }
                              $("#reponse").text(""); 
                              question(); // avec un retour ici...
      1. Contributeur

        Que vaut donc la variable "aleatoire" au moment du plantage?
        Te souviens-tu de à quoi sert cette variable?

        As-tu écrit ce programme?  Le comprends-tu?

        Que veux-tu faire précisément en ligne 14?  Sais-tu à quoi sert le mot clé "function"?

        1. Je suis débutant, mais j'apprends...

          La variable aléatoire me permet de piocher une question aléatoire dans un array, que je n'ai pas envoyé... les questions sont numérotées de 0 à 11

          Ce programme, je l'ai fait avec un ami, parti en vacances... (En fait, je fais une soirée avec ce jeu demain soir avec des potes... et si ca bug bah... pas de soirée, quoi)

          Je comprends ce programme, avec les connaissances que j'ai... Et à cette ligne 14, comme je le comprends, il me permet de retourner la fonction...

          bref voici le programme en naturel:

          quand je choisi un thème, une case est grisée et dans chaque thème (dans un array) il y a 11 questions.

          Quand je clique sur le bouton question, cela m'affiche une question aléatoire, qui sera 'mise de côté' pour ne pas qu'elle ressorte plus tard. Quand je clique sur le bouton réponse, cela doit afficher la réponse à cette question. Quand je reclique sur le bouton question, cela doit m'afficher une question non posée... (Chose qui fonctionne un temps et à un moment ça part en live... ce fameux message d'erreur, et le bouton réponse qui affiche ce qu'il veut.. WHY ?) Ensuite, si je souhaite choisir un autre thème, alors là, c'est foiré... 

        2. @Nirsab
          function question() {
                           
                              var min = 0;
                              var max = 10; // ET SI JE METS 12 AU LIEU DE 10, C'EST SUR QUE CA FOIRE
                              aleatoire = Math.floor(Math.random() * (max - min)) + min; 
                              if (questions.length === max) {
                                  alert('Toutes les questions ont été posées !');
                              } else if ($.inArray(parseInt(aleatoire), questions) === -1) {
                                  console.log(aleatoire);
                                  
                                  quest = listeQuestions[numTheme][aleatoire][1];  // FOIRAGE
                                 
                  
                             
                                  
                                  $('#question').text(quest); 
                                  questions.push(aleatoire); 
                      console.log(questions);
                     
          
                      
                    } else function question() {
                      
                      
                    }
                  }
                  $("#reponseButton").on("click", function () {
                    $("#reponse").text(listeQuestions[numTheme][aleatoire][2]); 
                  //   console.log(listeQuestions[numTheme][aleatoire][2]);
                       });

          Pour le premier essai, ca passe à peu près, quoique des fois je dois m'exciter sur le bouton pour afficher ma question et qu'il arrive que la réponse ne correspondent pas... Une fois que les 11 questions sont posées, le programme m'affiche que toutes les questions ont été posées... Mais impossible d'afficher les questions pour un nouveau thème choisi....

        3. Contributeur
          @Nirsab

          Si tu regardes dans la console, que vaut donc la variable "aleatoire" au moment du plantage?

      2. Elle valait 11. Du coup, cela m'a permis de comprendre.... j'ai mal renseigné la variable max

        Donc, plus de de bug de ce côté là... 

        Maintenant, j'aimerais comprendre:

        -- pourquoi, vers la 7ème question, je dois cliquer sur le bouton question plusieurs fois (genre 10x) avant qu'elle n'affiche la suivante...

        -- pourquoi, lorsque je choisis un nouveau thème, ET quand toutes les questions du thème précédent sont posées, aucune question ne s'affiche et que j'ai le alert("Toutes les questions ont été posées") qui ne fait que s'afficher quand je clique sur le bouton questions... 

        (ça m'affiche ça à chaque clique sur le ok de l'alert :

         [Violation]'click' handler took 1135ms  jquery-3.5.1.min.js:2
        [Violation]'click' handler took 1774ms   jquery-3.5.1.min.js:2
        [Violation]'click' handler took 1330ms  jquery-3.5.1.min.js:2
        [Violation]'click' handler took 1320ms  query-3.5.1.min.js:2

        )

        SVP :). Et merci de prendre le temps de m'aider :-)

      3. Je viens de lire l'article...

        Dans ce cas, je ne suis pas sûr de comprendre mon cas...

        Est-ce que cela veut dire que je dois utiliser une boucle ? un return ? voire carrément changer la méthode ? :-O

        Là, je crois que j'ai besoin de pas à pas...

        1. function question() {
                           var debut;
                              var min = 0;
                              var max = 11;
                              aleatoire = Math.floor(Math.random() * (max - min)) + min; 
                              if (questions.length === max) {
                                  alert('Toutes les questions ont été posées !');
                              } else if ($.inArray(parseInt(aleatoire), questions) === -1) { 
                                  console.log(aleatoire);
                                  
                                  quest = listeQuestions[numTheme][aleatoire][1]; 
                                 
                  
                             
                                  
                                  $('#question').text(quest); 
                                  questions.push(aleatoire); 
                      console.log(questions);
                     
          
                      
                    } else function question() {
                      
                      
                    }
                  }
                  $("#reponseButton").on("click", function () {
                    $("#reponse").text(listeQuestions[numTheme][aleatoire][2]); 
                  return debut
                       });

          Bon ainsi, cela ne fonctionne pas...

          (Peut-être que mon tâtonnement intéressera d'autres débutants comme moi...)

        2. Contributeur
          @Nirsab

          Comprends-tu la différence entre définir une fonction et y faire appel?

      4. Ah ! Vas-y explique-moi stp (simple, basique ;D)

        1. @yg_be

          D'accord, je l'ai lu et relu... mais cela ne m'aide pas vraiment à comprendre où ça coince...

        2. Contributeur
          @Nirsab

          Regarde peut-être comment ce font les déclarations et les appels d'autres fonctions, dans ton code.

        3. @yg_be
          function choixThemes() {
                              var min = 0;
                              var max = 20;
                              aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
                              if ($.inArray(parseInt(aleatoire), themes) === -1) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
                                  themes.push(aleatoire); // rempli le tableau des thèmes déjà choisis
                              }
                              if (themes.length < 4) { // relance la function tant qu'on n'a pas 4 thèmes
                                  choixThemes();
                              }
                          }

          Celle-ci par exemple... Que dois-je comparer ?

          (Je commence à baliser pour demain, moi)

        4. Contributeur
          @Nirsab

          Tout ce que tu apprends te servira encore après demain.

          Où se trouve la déclaration de la fonction?

          N'as-tu pas dans ton code d'autres appels à la fonction?

      5. certes mais c'est pour demain que cela doit fonctionner...

        Cette fonction n'est appelée qu'ici..

        1. Contributeur

          Imagine comme tu seras fier quand tu comprendras pourquoi et comment cela focntionne.

          En quelques secondes, je trouve un autre endroit où il est fait appel à cette fonction.

        2. @yg_be

          Je ne demande que ça: COMPRENDRE !! lol  Voilà ce que tu as demandé... Je ne la vois nulle part ailleurs, cette fonction question()... Je ne réussirai jamais à finir ça pour cet am ;'-(

          $('#questionButton').on('click', function () {
                              if (numTheme === '') {
                                  alert("Choisissez d'abord un thème");
                               timerManager.start();
                              } else {
                                  if (decompteLance === 'non') {
                                      $secondes = 120; 
                                      $('#countdown_sec').text($secondes); 
                                       timerManager.start($secondes); 
                                      decompteLance = 'oui';
                                      
                                  }
                                  $("#reponse").text(""); 
                                  question(); // APPEL FONCTION
                              }
                        
                          });
          
          
                          function question() { // FONCTION
              
              var min = 0;
              var max = 11;
              aleatoire = Math.floor(Math.random() * (max - min)) + min;
              if (questions.length === max) {
                  alert('Toutes les questions ont été posées !');
              } else if ($.inArray(parseInt(aleatoire), questions) === -1) {
                              console.log(aleatoire);
                              
                              quest = listeQuestions[numTheme][aleatoire][1];  
                              
                              $('#question').text(quest); 
                              questions.push(aleatoire); 
                  console.log(questions);
          
              } else function question() { // APPEL FONCTION
                  
                  
              }
          }
                  
                  $("#reponseButton").on("click", function () {
                    $("#reponse").text(listeQuestions[numTheme][aleatoire][2]); 
               
                       });
        3. Contributeur
          @Nirsab

          Regarde bien comment cela s'organise pour la fonction choixThemes().

          En ligne 22 du code montré au départ, tu as un appel à la fonction, une demande d'éxécution de la fonction:

          choixThemes(); // recherche 4 thèmes de façon aléatoire

          Dans le code que tu as partage en #24, tu as une déclaration de la fonction, qui définit ce que fait la fonction (tu peux observer que, dans certains cas, la fonction fait appel à elle-même:

          function choixThemes() {
                              var min = 0;
                              var max = 20;
                              aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
                              if ($.inArray(parseInt(aleatoire), themes) === -1) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
                                  themes.push(aleatoire); // rempli le tableau des thèmes déjà choisis
                              }
                              if (themes.length < 4) { // relance la function tant qu'on n'a pas 4 thèmes
                                  choixThemes();
                              }
                          }

          Comme signalé le 4 août 2022 à 12:56, la ligne de code suivante ne fait pas du tout appel à la fonction question().

          } else function question() { // APPEL FONCTION
        4. @yg_be

          Moui... donc il faut intervertir 2 choses ? 

          c'est vraiment flou, désolé :'-(

        5. @Nirsab

          Salut, non ce n'est pas une question d'intervertir mais de syntaxe: il faut écrire correctement votre if else.

          Le mieux si vous ne savez pas c'est de regarder dans le manuel:

          https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/if...else

          Cela ne fonctionne que si vous avez les bases du langage. Comme déclarer une variable, les différents types de variable, savoir créer et utiliser une fonction et les structures de test(ou conditionnele) comme if  else (si et sinon en français) ce que visiblement vous avez loupé.

          Evidemment une fonction ne doit pas faire appel à elle même dans la plupart des cas, le reste c'est une exception appelée singleton mais pas pertinent ici.

          Voyez une fonction comme un regroupement d'instructions avec un nom(ou pas ce sont les fonctions anonymes) et bien sûr une fonction peut en appeler une autre mais pas s’appeler elle même ce qui n'aurait aucun sens ou serait une boucle infini autrement dit un bug.

          Exemple: ma fonction "dit mon nom". La fonction doit donc dire le nom et pas appeler la fonction qui dit le nom sinon on tourne en rond et rien ne se passe. JavaScript indique une erreur plutôt que d'essayer de faire un boucle infini(parce qu'elle demande d’appeler la fonction qui va à nouveau appeler la fonction etc... au lieu de faire pour quoi elle est prévue).

          ps: dans un premier temps n'utilisez pas JQuery qui n'est qu'une bibliothèque JavaScript et va vous embrouiller et vous donner des mauvaises habitudes surtout qu'ici ça ne se justifie pas de l'utiliser et n'aura pour effet que de ralentir votre code, donc votre page.

      6. Merci pour ces explications :)

        Ca commence à être plus clair.

        Juste encore 3 bugs:

        1: Le bouton stop du chrono fait que le chrono s'arrête mais repart quand même là où il s'est arrêté

        2: Si toutes les questions sont posées dans le temps imparti, lorsque je choisis un nouveau thème, le chrono ne reprend pas à 60s

        3: si le chrono affiche 0 à la fin du temps, et si on choisi un autre thème, le chrono ne redémarre pas...

        Voici le code: Et une fois que tout sera réglé, je ne vous dérange plus, jusqu'à la prochaine fois lol :)

        <!DOCTYPE html>
        <html>
            <head>
                <title>Questions pour un Champion</title>
                <meta charset="utf-8">
                <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
                <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.13.0/css/all.css">
            </head>
            <body>
                <div class="container-fluid">
        
                    <div class="row">
                        <div class="col">
                            <div class="alert alert-danger" role="alert" style="text-align: center;font-weight: bold;">
                                <h1>MAX À LA SUITE</h1>
                                <button class="btn btn-warning" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
                                    <i class="fas fa-hand-sparkles"></i> Règles
                                </button><br/>
                                <div class="collapse" id="collapseExample" style="margin-top: 10px">
                                    <div class="alert alert-warning" style="text-align: justify">
                                        4 thèmes sont proposées. L'équipe éliminée à la manche précédente choisira d'entrée de jeu le thème pour chaque équipe en course parmi ces thèmes. 
                                        Les joueurs de l'équipe répondront à tour de rôle (Joueur A, puis B, puis C, puis A etc...).
                                        Les questions sont posées aléatoirement. Chaque réponse apporte 1 point. En cas de mauvaise réponse, 
                                        le score retombe à 0 et ne sera conservé que le score affiché en fin de chrono. Le but est d'avoir
                                        le plus de points à la suite, avant la fin de la liste de 11 questions, le tout en 60 secondes ou moins.
                                        En cas d'égalité, un jeu décisif aléatoire sera proposé. 
                                        Les 2 équipes ayant réalisé les meilleures performances seront qualifiées pour la manche finale.
                                    </div>
                                </div>
                               
                            </div>
                        </div>
        
                    </div>
                    <div class="row">
                        <div class="col">
                            <button id="themesAleatoires" class="btn btn-info" type="button"><i class="fas fa-list-ol"></i> 4 Thèmes</button>
                            <br/><br/>
                            <div id="themes" style="font-size: 18px"></div>
                        </div>
                        <div class="col">
                            <table class="table table-striped table-bordered">
                                <thead>
                                    <tr class="table-success">
                                        <th>ÉQUIPES QUALIFIÉES + JOUEUR A, B, C</th>
                                        <th>SCORE</th>
                                        <th>COMPTEUR</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td>1ère Équipe Qualifiée
                                            <input></td>
                                        <td><span id="compteur1" style="font-size: 20px"><b>0</b></span></td>
                                        <td>
                                            <button class="btn btn-success compteur" value="1|1" type="button"><i class="fas fa-plus"></i> 1</button> 
                                            <button class="btn btn-danger mise0" value="1|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>2ème Équipe Qualifiée
                                            <input></td>
                                        <td><span id="compteur2" style="font-size: 20px"><b>0</b></span></td>
                                        <td>
                                            <button class="btn btn-success compteur" value="2|1" type="button" ><i class="fas fa-plus"></i> 1</button> 
                                            <button class="btn btn-danger mise0" value="2|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>3ème Équipe Qualifiée
                                            <input></td>
                                        <td><span id="compteur3" style="font-size: 20px"><b>0</b></span></td>
                                        <td>
                                            <button class="btn btn-success compteur" value="3|1" type="button"><i class="fas fa-plus"></i> 1</button> 
                                            <button class="btn btn-danger mise0" value="3|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                        </td>
        
                                        <!-- <tr>
                                            <td>4ème Équipe Qualifiée
                                                <input></td>
                                            <td><span id="compteur4"><b>0</b></span></td>
                                            <td>
                                                <button class="btn btn-success compteur" value="4|1" type="button"><i class="fas fa-plus"></i> 1</button> 
                                                <button class="btn btn-danger mise0" value="4|0" type="button"><i class="fab fa-creative-commons-zero"></i></button>
                                            </td>
                                        </tr> -->
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
        
                    <div class="row">
                        <div class="col">
                            <div id="theme" class="alert alert-primary" role="alert">Thème...</div>
                            <table class="table table-borderless">
                                <tbody>
                                    <tr>
                                        <td><button id="questionButton" class="btn btn-warning" type="button"><i class="far fa-comment-dots"></i> Question</button></td>
                                        <td><div id="question" style="font-size: 25px"></div></td>
                                    </tr>
                                    <tr>
        
                                        <td><button id="reponseButton" class="btn btn-primary" type="button"><i class="far fa-lightbulb"></i> Réponse</button></td>
        
                                        <td><div id="reponse" style="font-size: 20px"></div></td>
                                        <td><button id="stopChrono" class="btn btn-primary" type="button" style="background-color:red;"><i class="far fa-stop-circle"></i> Stop</button></td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                        <div class="col">
                            <div class="alert alert-danger" role="alert" style="text-align:center;">
                                <b>Temps restant :</b><br>
                              
        
                            </div>
                            <div class="jumbotron" style="text-align:center;font-size:2em;font-weight:bold">
                                <span id="countdown_sec">60 secondes</span>
                            </div>
                        </div>
                    </div>
                    <div>
                        <div class="col">
                            <table class="table table-borderless">
                                <tbody>
                                    <tr>
                                        <td><div id="decisif" class="alert alert-primary" role="alert">Jeu décisif</div></td>
                                        <td><button id="jeuDecisif" class="btn btn-warning" type="button" style="background-color:hotpink;"><i class="far fa-handshake"></i> Jeu</button></td>
                                        <td><button id="reglejd" style="background-color:lightgray"><i class="fas fa-hand-sparkles"></i> Règles</td>
                                        <td><button id="quiJoueJD" style="background-color:lightgreen"><i class="fab fa-playstation"></i> Qui joue ?</td>
                                        <!-- <td><button id="chronometre" class="btn btn-warning" type="button" style="background-color:burlywood;"><i class="fas fa-stopwatch"></i> Chrono</button></td>
                                        <td><button id="stopChrono" class="btn btn-warning" type="button" style="background-color:palevioletred;"><i class="far fa-stop-circle"></i> Stop</button></td>
                                        <td><button id="back0Chrono" class="btn btn-warning" type="button" style="background-color:silver;"><i class="fas fa-undo-alt"></i> Mise à 0</button></td> -->
                                    </tr>
                                </tbody>
                            </table>
                            <!-- <div class="alert alert-danger" role="alert" style="text-align:center;">
                                <b>Temps :</b>
                            </div>
                            <div class="jumbotron" style="text-align:center;font-size:2em;font-weight:bold">
                                <span id="countup_sec">0 secondes</span> -->
                            </div>
                        </div>
                    </div>
                    
                </div>
        
                <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
                <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
                <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
                <!-- <script src="""></script> -->
                <script>
                    $(document).ready(function () {//n'apparait qu'une fois//
        
                        var chrono; // gestion du chrono
                        var decompteLance = 'non'; // pour empêcher le bouton Question de lancer plusieurs fois le chrono
                        var aleatoire; // nombre aléatoire
                        var themes = []; // affichage de 4 thèmes aléatoires
                        var numTheme = ''; // thème choisit
                        var questions = []; // questions déjà posées
                        //var precedente = null; // question/réponse précédente
        
                        
        
                        // Affichage de 4 thèmes aléatoires
                        $('#themesAleatoires').on('click', function () {
                            $('#themes').text(''); // vide la liste des thèmes
                            themes = []; // vide le tableau de mémorisation des thèmes
                            choixThemes(); // recherche 4 thèmes de façon aléatoire
                            afficheThemes(); // affiche les 4 thèmes
                             
                        });
        
                        // Choix d'un thème particulier (grise le bouton et le desactive)
                        // la syntaxe d'appel est différente car les boutons de choix n'existent pas encore au chargement de la page
                        $(document).on('click', '.choisirTheme', function () {
            numero = $(this).attr('value');
            numTheme = themes4alasuite[numero][0]; // mémorise le numéro du thème choisit
            theme = themes4alasuite[numero][1]; //
            $('#theme').text('THEME : ' + theme); // affiche le thème choisi en-dessous du bouton Question
            $(this).css('background-color', 'grey'); // colore le bouton en gris
            $(this).attr('disabled', 'disabled'); // désactive le bouton
            
            // nouveau ----------------------------------------------------------------------------
            $('#questionButton').attr('disabled', false) // réactive the bouton de questions
            questions = [] // s'assure que la liste des questions posées sur ce thème est bien vide.
        
        });
        
                        $('#questionButton').on('click', function () {
                            if (numTheme === '') {
                                alert("Choisissez d'abord un thème");
                             timerManager.start();
                            } else {
                                if (decompteLance === 'non') {
                                    $secondes = 60; // définit le nombre de secondes
                                    $('#countdown_sec').text($secondes); //affiche 50 dans le chrono
                                     timerManager.start($secondes); // lance le timer
                                    decompteLance = 'oui';
                                    
                                }
                                $("#reponse").text(""); 
                                question();
                            }
                      
                        });
        
        
                        function question() {
        
        var min = 0;
        var max = (listeQuestions[numTheme]).length; // <----------------------- max dépend du nombre de questions pour ce thème 
        aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
        if (questions.length === max) {
            alert('Toutes les questions ont été posées !');
            $('#questionButton').attr('disabled', true)     // <------------ désactive le bouton des questions
            timerManager.stop();
        } else if (! questions.includes(parseInt(aleatoire))) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
        
            quest = listeQuestions[numTheme][aleatoire][1];
            $('#question').text(quest); // affiche la nouvelle question
            questions.push(aleatoire); // rempli le tableau des questions déjà posées
        
        } else {
            question()
            // rappelle la fonction pour trouver un nouveau nombre aléatoire non utilisé
        }
        }
                $("#reponseButton").on("click", function () {
                  $("#reponse").text(listeQuestions[numTheme][aleatoire][2]); // affiche la réponse
                  
             
                     });
         
        
                        // Ajoute des points à une équipe
                        $('.compteur').on('click', function (e) {
                            e.preventDefault();
                            $val = $(this).attr('value').split('|');
                            $champ = '#compteur' + $val[0];
                            $new_score = parseInt($($champ).text()) + parseInt($val[1]);
                            if ($new_score < 0) {
                                $('#compteur' + $val[0]).text('0');
                            } else if ($new_score <= 10) {
                                $('#compteur' + $val[0]).text($new_score);
                            } else {
                                $('#compteur' + $val[0]).text('ÉQUIPE QUALIFIÉE')
                               
                            }
        
                        });
        
                        // Remet le nombre de points d'une équipe à zéro
                        $('.mise0').on('click', function () {
                            $val = $(this).attr('value').split('|');
                            $champ = '#compteur' + $val[0];
                            console.log("CHAMP", $champ);
                            $($champ).text('0');
                        });
        
                        // Recherche 4 thèmes de façon aléatoire
                        function choixThemes() {
                            var min = 0;
                            var max = 20;
                            aleatoire = Math.floor(Math.random() * (max - min)) + min; // cherche un nombre aléatoire
                            if ($.inArray(parseInt(aleatoire), themes) === -1) { // si le numéro de la question ne figure pas dans le tableau des questions déjà posées
                                themes.push(aleatoire); // rempli le tableau des thèmes déjà choisis
                            }
                            if (themes.length < 4) { // relance la function tant qu'on n'a pas 4 thèmes
                                choixThemes();
                            }
                        }
        
                        // Affiche, sous forme de boutons, les thèmes trouvés
                        function afficheThemes() {
                            $.each(themes, function (index, value) {
                                
                                $('#themes').append('<button class="btn btn-danger choisirTheme" value="' + value + '" type="button" >');
                                $('#themes').append(' ' + themes4alasuite[value][1] + '</br>');
                                $('#themes').append('</button>');
                             
                            });
                        }
        
                        // Affiche une question aléatoire dans le thème choisi
                        
        
        
                     $('#stopChrono').on('click', function () {
                        $("#countdown_sec").text("0");
                        timerManager.stop("0")
                     });
                
                        
        
                        timerManager = {
                            start: function ($secondes) {
                                $secondes = $secondes - 1; // provoque le décompte
                    if ($secondes >= 0) {
                      // tant que le chrono est supérieur à zéro
                      timer = setTimeout(function () {
                        // éxécute le code toutes les 1000 millisecondes
                        $("#countdown_sec").text($secondes); // affiche le temps restant
                        timerManager.start($secondes); // rappelle la fonction
                      }, 1000);
                    } else {
                      timerManager.stop(); // arrête le chrono
                    }
                  },
                  stop: function () {
                                clearTimeout(chrono);
                                $('#countdown_sec').text('0');
                                $("#theme").text("THEME :" + "");
                                $("#question").text("");
                                $("#reponse").text("");
                                
                            }
                        };
        
        
        
                        $('#jeuDecisif').on('click', function () {
                            var min = 0;
                            var max = 7;
                            aleatoire = Math.floor(Math.random() * (max - min)) + min;
                            $('#jeuDecisif').text(jeudecisif[aleatoire][1]);
                            $('#reglejd').text(jeudecisif[aleatoire][2]);
                            $('#quiJoueJD').text(jeudecisif[aleatoire][3]);
                        });
        
        
        
                            jeudecisif = [
                                [0, 'Ni oui, ni non', 'Qui tiendra le plus longtemps sans dire les mots interdits ?', 'Un joueur par équipe'],
                                [1, 'Le mot de passe', 'Qui fera deviner le plus de mots possible en 2 min?', 'Un joueur par équipe'],
                                [2, 'L\'Alpha-bête', 'Qui sera capable de réciter l\'alphabet à l\'envers, le plus loin possible sans se tromper ?', 'Un joueur par équipe'],
                                [3, 'Dans mon sac, il y a...', 'Quel joueur fera gagner son équipe à ce jeu de mémoire tonitruant ?', 'Tous les joueurs de chaque équipe'],
                                [4, 'Jeu du dictionnaire', 'Qui donnera les 3 définitions les plus proches (drôles ?) de ces mots inconnus au bataillon ?', 'Réponse collégiale de chaque équipe'],
                                [5, 'Mix Sing Can', 'Qui sera capable de chanter un cantique avec une autre musique dans les oreilles ? Au premier qui craque !', 'Un joueur par équipe'],
                                [6, 'Plus ou Moins', 'Qui trouvera le nombre le plus rapidement ?', 'Un joueur par équipe']
                            ];
        
        
                     
        
                            jeudecisif = [
                                [0, 'Ni oui, ni non', 'Qui tiendra le plus longtemps sans dire les mots interdits ?', 'Un joueur par équipe'],
                                [1, 'Le mot de passe', 'Qui fera deviner le plus de mots possible en 2 min?', 'Un joueur par équipe'],
                                [2, 'L\'Alpha-bête', 'Qui sera capable de réciter l\'alphabet à l\'envers, le plus loin possible sans se tromper ?', 'Un joueur par équipe'],
                                [3, 'Dans mon sac, il y a...', 'Quel joueur fera gagner son équipe à ce jeu de mémoire tonitruant ?', 'Tous les joueurs de chaque équipe'],
                                [4, 'Jeu du dictionnaire', 'Qui donnera les 3 définitions les plus proches (drôles ?) de ces mots inconnus au bataillon ?', 'Réponse collégiale de chaque équipe'],
                                [5, 'Mix Sing Can', 'Qui sera capable de chanter un cantique avec une autre musique dans les oreilles ? Au premier qui craque !', 'Un joueur par équipe'],
                                [6, 'Plus ou Moins', 'Qui trouvera le nombre le plus rapidement ?', 'Un joueur par équipe']
                            ];
        
                            themes4alasuite = [
                                [0, 'La géographie'],
                                [1, 'DJ français'],
                                [2, 'Histoire de France'],
                                [3, 'Le mode de vie des grenouilles'],
                                [4, 'La généalogie de Barak Obama'],
                                [5, 'Les polices d\'écriture'],
                                [6, 'Les langues mortes'],
                                [7, 'Les Youtubers français'],
                                [8, 'Charlie Chaplin'],
                                [9, 'Les marques de téléphones portables'],
                                [10, 'Les couleurs de robe de cheval'],
                                [11, 'Les animaux du passé'],
                                [12, 'Les rois du Maroc'],
                                [13, 'La population chinoise'],
                                [14, 'Des personnages très connus... Ou pas !'],
                                [15, 'Beethoven'],
                                [16, 'Que s\'est-il passé en...'],
                                [17, 'Chiffres, Nombres et Dates'],
                                [18, 'Vrai ou Faux'],
                                [19, 'Thème des grands dangers !!']
                            ];
        
                            listeQuestions = {
                                '0': [//La géographie//
                                    [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '1': [//DJ//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '2': [//Hist fr//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '3': [//grenouille//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '4': [//obama//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '5': [//police//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '6': [//langues mortes//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '7': [//youtuber
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '8': [//chaplin
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '9': [//poryable
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '10': [//cheval
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '11': [//anim passé
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '12': [//maroc
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '13': [//popula chine
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '14': [//Des personnages très connus... Ou pas !//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '15': [//betoven
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '16': [//Que s'est-il passé en...//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '17': [//Chiffres, Nombres et Dates//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '18': [//Vrai ou Faux//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ],
                                '19': [//Thème des grands dangers !!//
                                [0, '0', '0'],
                                    [1, '1', '1'],
                                    [2, '2', '2'],
                                    [3, '3', '3'],
                                    [4, '4', '4'],
                                    [5, '5', '5'],
                                    [6, '6', '6'],
                                    [7, '7', '7'],
                                    [8, '8', '8'],
                                    [9, '9', '9'],
                                    [10, '9', '9']
                                ]
                            };
                        });
        
        
                  
                </script>
            </body>
        </html>