본문 바로가기
Effect

퀴즈 유형 06

by 🐬마뇽뇽 마뇽🦄 2022. 8. 24.
728x90

06. 퀴즈 유형

객관식 문제로 답을 선택하고 정답을 확인했을 때에 여러 문제 중 정답을 맞춘 갯수가 무엇인지, 또한 정답의 갯수가 합격점인지 확인해보았습니다.


자바스크립트입니다. 확인 버튼을 누르고 정답을 확인하면서 몇 문제가 정답인지 또 36문제 이상을 맞춰서 합격인지 아닌지 스크립트를 짜보았습니다.

        const quizQuestion = document.querySelector(".quiz_question")           //문제 번호와 질문 
      const quizSelects = document.querySelector(".quiz_selects")             //객관식 보기
      const quizType = document.querySelector(".quiz_type")                   //문제타입
      const quizResult = document.querySelector(".quiz_answer .result")       //해설
      const quizConfirm = document.querySelector(".quiz_answer .confirm")     //정답확인버튼
      const quizView = document.querySelector(".quiz_view")     // 강아지
  
  
      let quizCount = 0;
      let quizScore = "";
  
      //문제 출력
      const updateQuiz = (index) => {
          // const typeTag = `<span class="quiz_type">${quizInfo[0].answerType}</span>`
  
          const questionTag = `
              <span class="number">${quizInfo[index].answerNum}</span>
              <div class="ask">${quizInfo[index].answerAsk}</div>`
  
          const choiceTag  = `
              <label for="select1">
                  <input type="radio" id="select1" class = "select" name="select" value="1">
                  <span class="choice">${quizInfo[index].answerChoice[0]}</span>
              </label>
              <label for="select2">
                  <input type="radio" id="select2" class = "select" name="select" value="2">
                  <span class="choice">${quizInfo[index].answerChoice[1]}</span>
              </label>
              <label for="select3">
                  <input type="radio" id="select3" class = "select" name="select" value="3">
                  <span class="choice">${quizInfo[index].answerChoice[2]}</span>
              </label>
              <label for="select4">
                  <input type="radio" id="select4" class = "select" name="select" value="4">
                  <span class="choice">${quizInfo[index].answerChoice[3]}</span>
              </label>
  
          //문제 출력
          quizQuestion.innerHTML = questionTag;  
          quizSelects.innerHTML = choiceTag;  
          // document.querySelector(".quiz_type").innerHTML = ${quizInfo[0].answerType}
          quizType.innerHTML = quizInfo[index].answerType 
          quizResult.innerHTML = quizInfo[index].answerEx 
          
          const quizChoice = quizSelects.querySelectorAll(".choice");
  
          for(let i=0; i<quizChoice.length; i++){
              quizChoice[i].setAttribute("onclick" , "choiceSelected(this)")
          }
  
          // 문제, 해설 숨기기
          quizResult.style.display = "none";
          quizConfirm.style.display = "none";
  
      }
      updateQuiz(quizCount);
  
      const choiceSelected = (answer) => {
          let userAnswer = answer.textContent;
          let currentAnswer = quizInfo[quizCount].answerResult; 
  
          if(userAnswer == currentAnswer){
              console.log("정답")
              quizView.classList.add("like")
              quizScore++
          }else {
              console.log("오답")
              quizView.classList.add("dislike")
              quizResult.style.display = "block";
          }
          quizConfirm.style.display = "block";
      }
  
      // if(100/quizInfo.length*quizScore >= 60){
      //     quizConfirm.textContent = `합격입니다.`
      // }else{
      //     quizConfirm.textContent = `불합격입니다.`
      // }
  
      //정답 확인 버튼
      const answerQuiz = () => {
          //마지막 문제
          if(quizInfo.length -1 == quizCount ){
              if(100/quizInfo.length*quizScore >= 60){
                  quizConfirm.textContent = `총 ${quizInfo.length}문제 중에 ${quizScore}문제를 맞췄습니다. 총 ${Math.floor(100/quizInfo.length*quizScore)}점 합격입니다.`
              }else{
                  quizConfirm.textContent = `총 ${quizInfo.length}문제 중에 ${quizScore}문제를 맞췄습니다. 총 ${Math.floor(100/quizInfo.length*quizScore)}점 불합격입니다.`
              }
          };
  
          quizCount++
          updateQuiz(quizCount);
          quizView.classList.remove("like","dislike")
      
      }
  
      quizConfirm.addEventListener("click",answerQuiz); 
728x90

'Effect' 카테고리의 다른 글

이미지 슬라이드 02  (4) 2022.08.29
이미지 슬라이드 01  (2) 2022.08.29
퀴즈 유형 05 - 점수  (3) 2022.08.24
퀴즈 유형 05  (8) 2022.08.18
검색 유형 02  (4) 2022.08.17

댓글


고양이 고양이
고양이 고양이
고양이 고양이