STIC Discussion:STIC I - exercice 3 (Zelda)

De EduTech Wiki
Version datée du 10 novembre 2019 à 22:12 par Rachel E (discussion | contributions) (→‎Quizz: passer d'une question à une autre -- ~~~~ : nouvelle section)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Quizz: passer d'une question à une autre -- Rachel E (discussion) 10 novembre 2019 à 21:11 (CET)

Bonsoir,

Je travaille depuis plusieurs jours sur l'exercice 3 dans le but de proposer un dispositif pour une séquence pédagogique sur le développement de l'esprit critique et la sensibilisation aux informations données/reçues sur internet. Je suis arrivée à une première version qui semble fonctionner. Aujourd'hui, j'ai essayé d'optimiser mon code javascript car il deviendrait long si les questions se multipliaient. Mon objectif pour cette deuxième version est d'avoir des listes de questions et de réponses qui apparaissent les uns après les autres sur ma page HTML pour ensuite mener à un profil personnalisé selon le score obtenu.

J'ai donc deux versions de mon travail que vous pouvez télécharger et visualiser ici:

Je pense que je peux encore optimiser le code mais je n'arrive actuellement pas à créer une fonction qui me permette de changer facilement d'un élément de ma liste à un autre. De plus, je me demande si je n'ai pas trop de listes et s'il est possible de grouper questions et réponse dans une même liste.

Voici mes deux questions.

1) Dans la version 2, numéro cinq (5), je répète le même code à plusieurs reprise pour changer d'une questions/réponses à une autre. Comment faire autrement? Faut-il utiliser une boucle?

<script>
    // (5) Augmenter le score et changer de question/réponse
var score = 0;
var currentQ = 0;
var currentA1 = 0;
var currentA2 = 0;
var currentA3 = 0;

document.getElementById("answer1").addEventListener("click", function (){
        score = score +1;
        currentQ = currentQ+1;
        currentA1 = currentA1+1;
        currentA2 = currentA2+1;
        currentA3 = currentA3+1;
        showQ(question[currentQ]);
        showA1(answer1[currentA1]);
        showA2(answer2[currentA2]);
        showA3(answer3[currentA3]);
        if (currentQ>=4){
            quizz.style.display = "none";
            results.style.display = "block";
        }
        });

document.getElementById("answer2").addEventListener("click", function()
{
    score = score +2;
    currentQ = currentQ+1;
        currentA1 = currentA1+1;
        currentA2 = currentA2+1;
        currentA3 = currentA3+1;
        showQ(question[currentQ]);
        showA1(answer1[currentA1]);
        showA2(answer2[currentA2]);
        showA3(answer3[currentA3]);
        if (currentQ>=4){
        quizz.style.display = "none";
        results.style.display = "block";
    }
    });
    
document.getElementById("answer3").addEventListener("click", function(){
    score = score +3;
    currentQ = currentQ+1;
        currentA1 = currentA1+1;
        currentA2 = currentA2+1;
        currentA3 = currentA3+1;
        showQ(question[currentQ]);
        showA1(answer1[currentA1]);
        showA2(answer2[currentA2]);
        showA3(answer3[currentA3]);
        if (currentQ>=4){
            quizz.style.display = "none";
            results.style.display = "block";
        }
        });
</script>



2) Est-ce possible d'entrer dans une liste les questions avec les réponses? Comment lier ceci à différents endroit de ma page HTML pour ensuite attribuer des points selon les Id? Voici mon code actuel (version 2, numéros 3 et 4)

<script>
// (3) variables questions réponses pour le quizz
var question = ['Que préfères-tu à l\'école', 'Aimes-tu faire du sport?', 'Quelle couleur préfères-tu?', 'A ton sujet, on peut dire que:'];

var answer1 = ['Français', 'Je ne fais pas de sport', 'Rouge', 'Tu as de l\'asmthe'];

var answer2 = ['Gymnastique', 'J\'adore le sport et j\'aime la compétition', 'Bleu', 'Tu vas (ou tu as déjà été) chez un logopédiste'];

var answer3 = ['Mathématique', 'Je fais du sport pour le plaisir', 'Vert', 'Aucune des deux précédentes réponses'];

var job = ['Futur.e enseignant.e, journaliste ou libraire!', 'Futur.e sportif.ve, paysagiste ou charpentier.ère', 'Futur.e astronaute, chimiste ou informaticien.ne']


//(4) fonctions pour faire apparaitre les questions/réponses
function showQ(x){
    document.getElementById("question").textContent = x;
}

function showA1(x) {
    document.getElementById("answer1").textContent = x;
}

function showA2(x) {
    document.getElementById("answer2").textContent = x;
}

function showA3(x) {
    document.getElementById("answer3").textContent = x;
}

function showJ(x) {
    document.getElementById("job").textContent = x;
}

showQ(question[0])
showA1(answer1[0])
showA2(answer2[0])
showA3(answer3[0])
</script>

Je vous remercie pour votre réponse et vous souhaite une belle semaine.

Rachel E