-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
93 lines (78 loc) · 2.83 KB
/
script.js
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/********* COSTANTI ***********/
const check = "images/checked.png"
const uncheck = "images/unchecked.png"
const select = {one: null, two: null, three: null};
const checkbox_vector = document.querySelectorAll(".choice-grid div");
function check_box(event){
const element = event.currentTarget;
let indice = element.dataset.questionId; //idx del dataset
for (const firstCheckbox of checkbox_vector){
//Seleziono img del checkbox
const image = firstCheckbox.querySelector(".checkbox");
if(firstCheckbox.dataset.questionId===indice){
if(firstCheckbox.dataset.choiceId===element.dataset.choiceId){
firstCheckbox.classList.remove("unchecked");
firstCheckbox.classList.add("checked");
image.src = check;
select[indice] = element.dataset.choiceId;
}
else{
firstCheckbox.classList.remove("checked");
firstCheckbox.classList.add("unchecked");
image.src=uncheck;
}
}
}
let flag = 0;
// Itero sull'idx dei checkbox
for(let indice in select){
if(select[indice] === null){
flag=1;
}
}
if(flag === 0){
getResult();
}
}
function getResult(){
// REMOVE EventListener -> Prevenire doppio click del checkbox
for(const thirdCheckbox of checkbox_vector){
thirdCheckbox.removeEventListener("click", check_box);
}
// DEFINITION Elementi
const div = document.createElement("div");
const titolo_h1 = document.createElement("h1");
const testo = document.createElement("p");
const bottone = document.createElement("button");
const reset = document.createElement("div");
div.classList.add("result");
bottone.classList.add("reset_button");
reset.textContent= "Clicca per rifare il test!";
if (select.first === select.two){
titolo_h1.textContent = RESULTS_MAP[select.two].title;
testo.textContent = RESULTS_MAP[select.two].contents;
}
else{
titolo_h1.textContent = RESULTS_MAP[select.three].title;
testo.textContent = RESULTS_MAP[select.three].contents;
}
// ADD Element Result
bottone.appendChild(reset);
div.appendChild(titolo_h1);
div.appendChild(testo);
div.appendChild(bottone);
document.querySelector("article").appendChild(div);
// ADD Reset Button
bottone.addEventListener("click", resetQuiz);
}
function resetQuiz(){
//Ricarico la pagina.
//Potrei volendo anche rendere gli elementi hidden, svuotare la mappa, e reimpostare i checkbox.
//Dunque la scelta di resettare gli elementi con un refresh della pagina è la soluzione più veloce.
location.reload();
}
/********* EVENT LISTENER ***********/
// Appena clicco su thirdCheckbox (che è l'ultimo checkbox del quiz) esegui la funzione check_box
for(const thirdCheckbox of checkbox_vector){
thirdCheckbox.addEventListener("click", check_box);
}