Giant Danio Fish
본문 바로가기
Javascript_Effect

퀴즈 만들기 - 주관식(여러문제) 유형

by 코딩왕자 2022. 8. 5.

퀴즈 효과

주관식(여러문제) 유형


결과


JavaScript

문제 출력, 정답 숨기기, 정답 확인쪽 스크립트는 문제가 2개이상 복수형태이므로 직접 텍스트를 치거나, for문을 이용하거나 forEach문을 이용해서 출력하였습니다. 자세한 설명은 주석표시로 확인하겠습니다.

//선택자
//선택자
const quizType = document.querySelectorAll(".quiz__type");                //퀴즈 종류, 다중선택을위해 querySelector에 All을 붙힌다.
const quizNumber = document.querySelectorAll(".quiz__question .number");  //퀴즈 번호
const quizAsk = document.querySelectorAll(".quiz__question .ask");        //퀴즈 질문
const quizConfirm = document.querySelectorAll(".quiz__answer .confirm");  //정답 확인 버튼
const quizResult = document.querySelectorAll(".quiz__answer .result");    //정답 결과
const quizInput = document.querySelectorAll(".quiz__answer .input");        //사용자 정답
const quizView = document.querySelectorAll(".quiz__view");            //강아지

//문제정보
const quizInfo = [
    {
        answerType: "웹디자인기능사 2015년 1회",
        answerNum: "1",
        answerAsk: "색광에서 Red, Green, Blue가 혼합될 때 그 결과 색은 무엇인가요?",
        answerResult: "White"
    },
    {
        answerType: "웹디자인기능사 2015년 1회",
        answerNum: "2",
        answerAsk: "다양한 구성 요소끼리 하나의 규칙으로 단일화시키는 원리는 무엇인가요?",
        answerResult: "통일"
    },
    {
        answerType: "웹디자인기능사 2015년 1회",
        answerNum: "3",
        answerAsk: "계통 생명이라고도 하며 색상, 명도, 채도를 표시하는 색명은 무엇인가요?",
        answerResult: "일반색명"
    },
    {
        answerType: "웹디자인기능사 2015년 1회",
        answerNum: "4",
        answerAsk: "유사, 대비, 균일, 강약 등의 디자인 요소가 포함되어 있는 디자인 원리는 무엇인가요?",
        answerResult: "조화"
    },
]

//문제 출력

//for문 이용해서 출력
// for(i = 0; i<quizInfo.length; i++){
//     quizType[i].textContent = quizInfo[i].answerType;
//     quizNumber[i].textContent = quizInfo[i].answerNum + ". ";
//     quizAsk[i].textContent = quizInfo[i].answerAsk;
//     quizResult[i].textContent = quizInfo[i].answerResult;
// }

//직접 텍스트 치는 방법
// quizType[0].textContent = quizInfo[0].answerType;   /*quizType의 첫번째에 퀴즈인포 첫번째 answerType을 넣는다*/
// quizType[1].textContent = quizInfo[1].answerType;   /*quizType의 두번째에 퀴즈인포 두번째 answerType을 넣는다*/
// quizType[2].textContent = quizInfo[2].answerType;   /*quizType의 세번째에 퀴즈인포 세번째 answerType을 넣는다*/
// quizType[3].textContent = quizInfo[3].answerType;   /*quizType의 네번째에 퀴즈인포 네번째 answerType을 넣는다*/

// quizNumber[0].textContent = quizInfo[0].answerNum + ". ";   /*quizNumber의 첫번째에 퀴즈인포 첫번째 answerNum를 넣는다*/
// quizNumber[1].textContent = quizInfo[1].answerNum + ". ";
// quizNumber[2].textContent = quizInfo[2].answerNum + ". ";
// quizNumber[3].textContent = quizInfo[3].answerNum + ". ";

// quizAsk[0].textContent = quizInfo[0].answerAsk;   /*quizAsk의 첫번째에 퀴즈인포 첫번째 answerAsk를 넣는다*/
// quizAsk[1].textContent = quizInfo[1].answerAsk;
// quizAsk[2].textContent = quizInfo[2].answerAsk;
// quizAsk[3].textContent = quizInfo[3].answerAsk;

// quizResult[0].textContent = quizInfo[0].answerResult;    /*quizResult의 첫번째에 퀴즈인포 첫번째 answerResul를 넣는다*/
// quizResult[1].textContent = quizInfo[1].answerResult;
// quizResult[2].textContent = quizInfo[2].answerResult;
// quizResult[3].textContent = quizInfo[3].answerResult;

//forEach문 이용해서 출력
quizInfo.forEach((e,i) => {
    quizType[i].textContent = quizInfo[i].answerType;
    quizNumber[i].textContent = quizInfo[i].answerNum + ". ";
    quizAsk[i].textContent = quizInfo[i].answerAsk;
    quizResult[i].textContent = quizInfo[i].answerResult;
});

//정답 숨기기 직접 텍스트 치기
// quizResult[0].style.display = "none";
// quizResult[1].style.display = "none";
// quizResult[2].style.display = "none";
// quizResult[3].style.display = "none";

//for문 이용해서 정답 숨기기
// for(let i = 0; i<quizInfo.length; i++){
//     quizResult[i].style.display = "none";
// }

//forEach문 이용해서 정답 숨기기
quizInfo.forEach((e, i) => {
    quizResult[i].style.display = "none";
});

//정답 확인
// quizConfirm.addEventListener("click", () => {   /*정답이 4개인거를 인식시켜줘야하기때문에 forEach문 사용*/
//     alert("ddd");
// });

quizConfirm.forEach((btn, num) => {
    btn.addEventListener("click", () => {
        
        // 사용자 정답
        const userWord = quizInput[num].value.toLowerCase().trim();              //소문자로 치환  , 여백 없앰


        //사용자 정답 == 문제 정답
        if(userWord == quizInfo[num].answerResult){
            //정답인경우
            // alert("정답")
            quizView[num].classList.add("like");
            quizConfirm[num].style.display = "none";
        } else {
            //오답인경우
            // alert("오답")
            quizView[num].classList.add("dislike");       /*quizView(강아지)에 dislike 추가*/
            quizConfirm[num].style.display = "none";      /*quizConfirm(정답 확인 버튼)을 안보이게 설정*/
            quizResult[num].style.display = "block";      /*quizResult(정답 결과)을 안보이게 설정*/
            quizInput[num].style.display = "none";        /*quizConfirm(정답 확인 버튼)을 안보이게 설정*/ 
        }   
    })
});

'Javascript_Effect' 카테고리의 다른 글

Search Effect02  (9) 2022.08.17
Search Effect01  (7) 2022.08.16
퀴즈 만들기 - 객관식(한문제) 유형  (10) 2022.08.08
퀴즈 만들기 - 주관식 유형  (10) 2022.08.04
퀴즈 만들기 - 정답 확인 유형  (12) 2022.08.04

댓글


광고 준비중입니다