index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const quizContainer = document.getElementById('quiz');
  2. const resultsContainer = document.getElementById('results');
  3. const submitButton = document.getElementById('submit')
  4. const createQuizBtn = document.getElementById('create_constructor')
  5. function buildQuiz(){
  6. const output = [];
  7. // перебираем вопросы
  8. myQuestions.forEach(
  9. (currentQuestion, questionNumber) => {
  10. const answers = [];
  11. // перебираем ответы
  12. for(letter in currentQuestion.answers){
  13. // добавляем радио кнопку
  14. answers.push(
  15. `<label>
  16. <input type="radio" name="question${questionNumber}" value="${letter}">
  17. ${letter} :
  18. ${currentQuestion.answers[letter]}
  19. </label>`
  20. );
  21. }
  22. output.push(
  23. `<div class="card">
  24. <div class="question"> ${currentQuestion.question} </div>
  25. <div class="answers"> ${answers.join('')} </div>
  26. </div>`
  27. );
  28. setAnswersToLS(answers)
  29. }
  30. );
  31. quizContainer.innerHTML = output.join('');
  32. }
  33. const setAnswersToLS = (data) => {
  34. localStorage.setItem('answers', JSON.stringify(data));
  35. }
  36. const getAnswersLS = () => {
  37. const answersLS = JSON.parse(localStorage.getItem('answers'));
  38. if (answersLS) {
  39. answersLS.forEach((answer, index) => answers[index] = answer)
  40. }
  41. }
  42. function showResults(){
  43. // контейнер для ответов
  44. const answerContainers = quizContainer.querySelectorAll('.answers');
  45. // счётчик правильных ответов
  46. let numCorrect = 0;
  47. // для каждого вопроса
  48. myQuestions.forEach( (currentQuestion, questionNumber) => {
  49. // находим выбранный ответ
  50. const answerContainer = answerContainers[questionNumber];
  51. const selector = `input[name=question${questionNumber}]:checked`;
  52. const userAnswer = (answerContainer.querySelector(selector) || {}).value;
  53. const rightAnswer = currentQuestion.correctAnswer;
  54. // если ответ правильный
  55. if(userAnswer === rightAnswer){
  56. // то добавляем к правильным ответам
  57. numCorrect++;
  58. // и отмечаем зелёным
  59. answerContainers[questionNumber].style.color = 'green';
  60. }
  61. // если ответ не правильный, или не отмеченный
  62. else {
  63. // - тогда красный
  64. answerContainers[questionNumber].style.color = 'red';
  65. const correctAnswer = document.createElement('p');
  66. correctAnswer.innerText=`Correct answer is: ${rightAnswer}`
  67. answerContainers[questionNumber].appendChild(correctAnswer)
  68. }
  69. });
  70. // показываем результат
  71. let userTestResult = numCorrect >= 7 ? "passed" : "did not pass";
  72. resultsContainer.innerHTML = `<h4>You ${userTestResult} the test! <a href="#" class="test-again">Take the test again</a></h4>
  73. <h5>You scored ${numCorrect} out of ${myQuestions.length}</h5>`;
  74. document.querySelector('.test-again').onclick = (e) => {
  75. e.preventDefault();
  76. localStorage.removeItem('answers');
  77. location.reload();
  78. }
  79. }