piffy icon

main.js

piffy | PRO | 08/13/21 02:10:38 PM UTC | 0 ⭐ | 1244 👁️ | Never ⏰ | []
JavaScript |

3.31 KB

|

None

|

0 👍

/

0 👎

let quiz = {
  // (A) PROPRIETA'
  // (A1) DOMANDE E RISPOSTE
  // Q = DOMANDE, O = OPZIONI, A = RISPOSTA GIUSTA
  data: [
    {
      q : "Nelle Olimpiadi, qual è la distanza tra bersaglio e arcere?",
      o : [
        "50 metri",
        "70 metri",
        "100 metri",
        "120 metri"
      ],
      a : 1 // gli array iniziano con 0, per cui la risposta è 70!!
    },
    {
      q : "Nella roulette, qual è il numero massimo?",
      o : [
        "22",
        "24",
        "32",
        "36"
      ],
      a : 3
    },
    {
      q : "Quanti mesi hanno 28 giorni?",
      o : [
        "dipende",
        "1",
        "6",
        "12"
      ],
      a : 3 // Nel senso: tutti hanno ALMENO 28 giorni
    },
    {
      q : "Qual è il settimo pianeta del sistema solare?",
      o : [
        "Urano",
        "Nettuno",
        "Plutone",
        "Eris"
      ],
      a : 0
    },
    {
      q : "Qual è l'oceano più grande?",
      o : [
        "Atlantico",
        "Indiano",
        "Artico",
        "Pacifico"
      ],
      a : 3
    }
  ],
 
  // (A2)  ELEMENTI HTML
  hWrap: null, // contenitore del quiz
  hQn: null, // contenitore delle domande
  hAns: null, // contenitore delle  risposter
 
  // (A3) FLAGS
  now: 0, // domanda corrente
  score: 0, // punteggio corrente
 
  // (B) Inizializzazione
  init: function(){
    // (B1) CONTENITORE
    quiz.hWrap = document.getElementById("quizWrap");
 
    // (B2) DOMANDE
    quiz.hQn = document.createElement("div");
    quiz.hQn.id = "quizQn";
    quiz.hWrap.appendChild(quiz.hQn);
 
    // (B3) RISPOSTE
    quiz.hAns = document.createElement("div");
    quiz.hAns.id = "quizAns";
    quiz.hWrap.appendChild(quiz.hAns);
 
    // (B4) VIA!
    quiz.draw();
  },
 
  // (C) SCRIVERE DOMANDE
  draw: function(){
    // (C1) DOMANDA
    quiz.hQn.innerHTML = quiz.data[quiz.now].q;
 
    // (C2) OPZIONI
    quiz.hAns.innerHTML = "";
    for (let i in quiz.data[quiz.now].o) {
      let radio = document.createElement("input");
      radio.type = "radio";
      radio.name = "quiz";
      radio.id = "quizo" + i;
      quiz.hAns.appendChild(radio);
      let label = document.createElement("label");
      label.innerHTML = quiz.data[quiz.now].o[i];
      label.setAttribute("for", "quizo" + i);
      label.dataset.idx = i;
      label.addEventListener("click", quiz.select);
      quiz.hAns.appendChild(label);
    }
  },
 
  // (D) OPZIONE SELEZIONATA
  select: function(){
    // (D1) Al click, eliminare tutto.
    let all = quiz.hAns.getElementsByTagName("label");
    for (let label of all) {
      label.removeEventListener("click", quiz.select);
    }
 
    // (D2) Controllo se corretto.
    let correct = this.dataset.idx == quiz.data[quiz.now].a;
    if (correct) {
      quiz.score++;
      this.classList.add("correct");
    } else {
      this.classList.add("wrong");
    }
 
    // (D3) Domanda successiva o fine gioco
    quiz.now++;
    setTimeout(function(){
      if (quiz.now < quiz.data.length) { quiz.draw(); }
      else {
        quiz.hQn.innerHTML = `Hai dato ${quiz.score} risposte giuste su ${quiz.data.length} .`;
        quiz.hAns.innerHTML = "";
      }
    }, 1000);
  }
};
window.addEventListener("load", quiz.init);
 

Comments