-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
152 lines (135 loc) · 4.7 KB
/
index.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
const perguntas = [
{
pergunta: "Qual é a finalidade do comando 'console.log()' em JavaScript?",
respostas: [
"Exibir uma mensagem de erro",
"Imprimir dados no console",
"Criar uma variável"
],
correta: 1
},
{
pergunta: "Qual é a função do operador '===' em comparações em JavaScript?",
respostas: [
"Comparação de valores sem considerar o tipo",
"Atribuição de valores",
"Comparação estrita de valores e tipos"
],
correta: 2
},
{
pergunta: "Como se declara uma variável em JavaScript?",
respostas: [
"let myVar;",
"const myVar = 10;",
"ambas as opções acima estão corretas"
],
correta: 2
},
{
pergunta: "O que é uma função em JavaScript?",
respostas: [
"Um tipo de dado",
"Um bloco de código reutilizável",
"Uma variável global"
],
correta: 1
},
{
pergunta: "Qual é a diferença entre 'let' e 'const' na declaração de variáveis?",
respostas: [
"Nenhuma, são sinônimos",
"let é usado para valores constantes, const para variáveis",
"let permite reatribuição, const cria variáveis imutáveis"
],
correta: 2
},
{
pergunta: "O que é o DOM em JavaScript?",
respostas: [
"Um método de criptografia",
"Um modelo de objeto para manipular documentos HTML",
"Uma linguagem de programação"
],
correta: 1
},
{
pergunta: "Como se realiza uma iteração sobre os elementos de um array em JavaScript?",
respostas: [
"Usando a estrutura 'if-else'",
"Com a declaração 'switch'",
"Utilizando loops como 'for' ou 'forEach'"
],
correta: 2
},
{
pergunta: "O que é o JSON em JavaScript?",
respostas: [
"Um método de formatação de texto",
"Uma linguagem de estilização",
"Um formato de dados leve e intercambiável"
],
correta: 2
},
{
pergunta: "Qual é a diferença entre 'null' e 'undefined' em JavaScript?",
respostas: [
"São iguais, usados de forma intercambiável",
"'null' representa a ausência de valor, 'undefined' é atribuído explicitamente",
"Ambos representam valores vazios"
],
correta: 1
},
{
pergunta: "Como se adiciona um evento a um elemento HTML usando JavaScript?",
respostas: [
"Apenas com CSS",
"Usando o atributo 'event'",
"Através do método 'addEventListener'"
],
correta: 2
},
];
//define a variavel que vai buscar a div com o id quiz
const quiz = document.querySelector('#quiz')
//define a variavel que vai buscar o template
const template = document.querySelector('template')
//aumenta ou diminui o numero de respostas corretas
const corretas = new Set()
const totalDePerguntas = perguntas.length
//verifica os acertos e subistitui o numero de perguntas corretas pelo tamanho da const corretas
const mostrarTotal = document.querySelector('#acertos span')
mostrarTotal.textContent = corretas.size + ' de ' + totalDePerguntas
// loop ou laço de repetição
for(const item of perguntas) {
//clonar o template das perguntas
const quizItem = template.content.cloneNode(true)
//Muda o título das perguntas
quizItem.querySelector('h3').textContent = item.pergunta
for(let resposta of item.respostas) {
//clona e busca onde deve ser colocado as informações das perguntas
const dt = quizItem.querySelector('dl dt').cloneNode(true)
//Muda o título das respostas
dt.querySelector('span').textContent = resposta
//adciona no input os atributos name e pergunta com o numero dela
dt.querySelector('input').setAttribute('name', 'pergunta-' + perguntas.indexOf(item))
//muda o value do input das pergundas com base no array respostas
dt.querySelector('input').value = item.respostas.indexOf(resposta)
//verifica se a resposta assinalada é a correta
dt.querySelector('input').onchange = (event) => {
const estaCorreta = event.target.value == item.correta
//diminui o numero de respostas corretas
corretas.delete(item)
//aumenta o numero de respostas corretas
if (estaCorreta) {
corretas.add(item)
}
mostrarTotal.textContent = corretas.size + ' de ' + totalDePerguntas
}
quizItem.querySelector('dl').appendChild(dt)
}
// remove o "Resposta A" das perguntas
quizItem.querySelector('dl dt').remove()
// Coloca a pergunta na tela
quiz.appendChild(quizItem)
}