Skip to content

WillianOL/Quiz-Javascript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quiz Javascript - JS👨‍💻

Quiz com cinco perguntas sobre Javascript

Ferramentas utilizadas🛠️

Para a elaboração do projeto, foram usadas as tecnologias:

  • JavaScript

  • HTML

  • CSS

Sobre o projeto📃

Aplicação consiste em uma página de quiz com cinco perguntas sobre javascript, tendo a opção de verdadeiro ou falso. As perguntas são pegas de um arquivo JSON, podendo adicionar mais perguntas se nescessários, tornando a quantidade de perguntas alterável.

Fiz esse projeto para treinar meus conhecimentos em javascript, principalmente sobre módulos e requisição http(feath). Criei uma alteração entre as páginas sem precisar recarregar a página.

Acessar projeto ✈

Quiz Javascript

JavaScript

Código para trocar de página sem recarregar

Neste projeto, criei a troca de página sem precisar recarregar a mesma. Para fazer isso, primeiro criei as três páginas HTML. São elas:

  • index.html - página principal, onde se iniciará o quiz;
  • quizPage.html - página onde vão ser colocadas as perguntas;
  • paginaDeRecomecar.html - página final, onde pode-se recomeçar o quiz;

Depois, separei o javascript em módulos pois achei melhor para trabalhar e depois dar manuntenção ao código. Então criei o arquivo "trocarDePagina.js" onde ficará o código para trocar de página. Nele, primeiro criei uma variável que pegará o elemento que tiver a classe "buttonStart"(botao para iniciar o quiz).

 

Logo após, no botão adiciono o evento de click com o método ".addEventListener()" para chamar a função cliqueAleatorio()

Função cliqueAleatorio()

Passando como parâmetro o "event", ela é responsável por pegar qualquer clique no botão e chamar a função pegarUrl() passando como parâmetro o href do event. Nela também é passado o mesmo link no history para mudar a URL do navegador sem dar refresh na página.

Função pegarUrl()

Essa é a função responsável por pegar a url através da requisição http feach e transformá-la em texto. Ou seja, ela vai pegar o html da página de destino e transformar em texto. Como é uma requisição, a função é assincrona e o que retorna é uma promise, utilizei o async e o await. No final, a função trocarDePagina é chamada passando o html em texto como argumento.

Função trocarDePagina()

Essa função é responsável por fazer a troca de página sem atualizar a mesma. Ela possui o parâmetro "html" que é o HTML em forma de texto passado pela função pergarUrl(). Na função, primeiro é criada a variável "novoHtml" que cria um elemento section, depois o novoHtml recebe o html em texto com um .innerHTML.



Depois, mais duas variáveis são criadas, "antigoConteudo" que pega o conteiner onde ficará o novo HTML, e "novoConteudo" que pega o mesmo conteiner só que do HTML novo(Os dois HTML's tem que ter o mesmo elemento com a classe ".conteiner"). Depois o titulo da página recebe o titulo novo e é feito um innerHTML passando o conteudo novo para o que já está na página.

O arquivo do código das perguntas foi importado neste. Depois executado ao final da troca de página, pois assim evita que ocorra o erro do código carregar mais rápido que a trocar de página, então é executado somente quando a página carregar, ou seja, na função "trocaDePagina()".

Código do funcionamento das perguntas

Arquivo JSON das perguntas

Para armazenar as peguntas, criei um arquivo JSON. Nele, possui objetos com as perguntas com suas respostas, armezenando um valor booleano. Ele possui cinco perguntas, porém é possível adicionar ou remover perguntas, pois o código é flexivel nesse quesito.

Variáveis importantes

Primeiro, para a elaboração do código para exibir e responder as perguntas, criei cinco variáveis imprtantes. São elas:

  • numeroIndicadorDaPergunta - Pega o h1 onde ficará o número indicador da pergunta. EX: Pergunta 1º, 2º ...;
  • paragrafoDaPergunta - Paragrafo onde será colocado a pergunta;
  • botoesResposta - Botões para responder a pergunta. (verdadeiro ou falso);
  • perguntaSelecionada - Variável que armazenará a pergunta do arquivo JSON;
  • contadorDaPergunta - variável onde ficará o número que indicará qual é a pergunta que o usuário está, começando com 0 pois é a partir dos index de uma array.
 

Depois disso, a função colocarPerguntas() é executada.

Função colocarPerguntas()

A função colocarPerguntas é assincrona. Ela serve para pegar as peguntas do arquivo JSON e exibilas na tela de acordo com o valor da variável contadorDaPergunta. Nela usei a seguinte lógica: Atribui o valor da variável contadorDaPergunta em outra variável(numeroDaPergunta), então toda a vez que o código é iniciado o contadorDaPergunta recebe +1, porém o numeroDaPergunta ainda continua com seu valor anterior; Por exemplo, na primeira execução o contador começa como 0, pegando o primeiro objeto(pergunta) do arquivo JSON e exibindo em tela, na segunda execução começa com +1 e pega o segundo objeto(pergunta) e assim sucessivamente.

 

Seguindo, a variável perguntaSelecionada recebe o objeto com a pergunta para ser utilizado mais a frente no código. Para identificar que as perguntas acabaram e recomeçar o quiz, criei uma estrutura condicional utilizando a seguinte lógica: Se o número da pergunta for igual ao número de perguntas no arquivo json(jsonPerguntas), executa a função "recomecarQuiz" passando o href da página de recomeçar.

Função responderPergunta()

A função responderPergunta serve para pegar a resposta do usuário (verdadeiro ou falso) e comparar com a resposta da pergunta, acertando ou errando. Dependendo da resposta ela da um play em um efeito sonoro de errado ou correto.

Para executar a função, primeiro fiz um forEach na variável botoesResposta onde para cada botão é adicionado um evento de clique que chama a função responderPergunta().

 

Nela, primeiro peguei o valor do botão clicado. Fiz isso pegando o valor do atributo "data", onde o botão de verdadeiro possui o valor "true" e o de falso possui o valor "false"

 

Seguindo, é criado a variável conteinerDaPergunta que seleciona toda a section da pergunta. Depois, são criadas duas variáveis usando o construtor new Audio(), são elas:

  • somDeErrado - armazena o áudio que será tocado quando a reposta for incorreta.
  • somDeCorreto - armazena o áudio que será tocado quando a resposta for correta.
 

Para fazer a validação da resposta utilizei uma estrutura condicional, utilizando a seguinte condição: Se o valor do botão clicado for igual ao valor da resposta, primeiro remove a classe "respostaErrada" do conteiner, depois dá um ".play()" no audio de correto e executa novamente a função "colocarPergunta()" para seguir para a proxima pergunta. Se não, ou seja, se a reposta for errada adiciona a classe "respostaErrada" no conteiner e da um ".play()" no áudio de errado.

Função recomecarQuiz()

A função recomecarQuiz serve para exibir a tela de recomaçar o quiz assim que a ultima pergunta for respondida. Ela é chamada na função colocarPergunta e tem como parâmetro o href da página HTML "paginaDeRecomecar". Sendo assim, é atribuido esse href no botão de verdadeiro. Quando é clicado, o código trocarDePagina é acionado trocando a página.

About

Quiz de 5 perguntas sobre JavaScript (feito com javascript)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published