본문 바로가기

아래로 스크롤 해주세요!

My Reference Book

-

제가 배웠던것을 한곳에 정리해보았어요!

HTML

HTML 태그 톺아보기

HTML

자세히보기

CSS

CSS 속성 톺아보기

CSS

자세히보기

JAVASCRIPT

JS 실행문 톺아보기

JAVASCRIPT

자세히보기

최신댓글

JS 응용하기

JS 응용하기 - 퀴즈 04

by C0Di 2022. 8. 8.
728x90

4번 Radio 버튼을 통한 선택형 문제 만들기

문제 출력 및 정답 출력시 함수로 하나씩 묶어 충동을 방지하고, 라디오 버튼을 통해 checked가 생성되면 선택한 값과 저장되어있는 값이 맞는지 비교후 정답을 출력한다.



자바스크립트

//선택자
    const quizType = document.querySelector(".quiz__type");             //다중의 값이 있을때는 을 붙여 선택이 가능하게끔 한다.               //퀴즈 종류 : 클래스 quiz__type에 대입함
    const quizNumber = document.querySelector(".quiz__question .number");//퀴즈 번호 : 클래스 quiz__quetion의 .number에 대입함
    const quizAsk = document.querySelector(".quiz__question .ask");      //퀴즈 질문 : 클래스 quiz__quetion의 .ask에 대입함
    const quizConfirm = document.querySelector(".quiz__answer .confirm");//정답 확인 버튼 : 클래스 quiz__answer의 .confirm에 대입함
    const quizResult = document.querySelector(".quiz__answer .result");  //정답 결과 : 클래스 quiz__answer의 .result에 대입함
    const quizInput = document.querySelector(".quiz__answer .input");    //사용자 정답 : 클래스 quiz__answer의 .input에 대입함
    const quizView = document.querySelector(".quiz__view");              //강아지 보기
    const quizSelects = document.querySelector(".quiz__selects");        //객관식 보기
    const quizChoice = quizSelects.querySelectorAll(".choice");                //객관식 보기
    const quizSelect = quizSelects.querySelectorAll(".select");                //객관식 보기
    
    //문제정보
    const quizInfo = [
        {
            answerType: "웹디자인 기능사 2015년 07월",
            answerNum: "1",
            answerAsk: "색의 3속성 중 사람의 눈이 가장 예민하고 강하게 반응하는 대비는?",
            answerChoice : ["명도대비", "색상대비", "보색대비", "채도대비"],
            answerResult : "1",
            answerEx : "명도가 다른 두 색의 영향에 의해 명도차가 다르게 지각되는 현상."
        }
    ]
    
    //문제 출력 함수(upadateQuiz) 생성 : 함수끼리 충돌을 방지하기 위해 함수(한 덩어리)로 묶어 작성
    function updateQuiz(){
        
        //문제 출력
        quizType.textContent=quizInfo[0].answerType;
        quizNumber.textContent=quizInfo[0].answerNum+". ";
        quizAsk.textContent=quizInfo[0].answerAsk;
        quizResult.textContent=quizInfo[0].answerEx;
    
        //보기 출력
        for(let i=0; i<4; i++){
            quizChoice[i].textContent=quizInfo[0].answerChoice[i]
        }
    
        //해설 숨기기
        quizResult.style.display="none";
    }
    
    updateQuiz();                                                   //만들어진 함수 updateQuiz 실행으로 문제,보기,숨기기 처리
    
    //정답 확인
    function answerQuiz(){
        //사용자가 선택한 정답 == 문제 정답
        //사용자가 클릭한 input박스를 가져와야함 --> chechked를 가져오면 됨
    
        for(let i=0; i<quizSelect.length; i++){
            if(quizSelect[i].checked == true){                      //만약 quizSelect[i]배열에 checked가 생기면 true로 처리해준뒤
                //체크된 번호 == 문제 번호
                if(quizSelect[i].value == quizInfo[0].answerResult){//그럼 지금 선택한 quizSelect[i]값이 quizInfo[0] 배열에 있는 answerResult랑 값이 같은지 비교
                    // alert("정답")
                    quizView.classList.add("like")                  //like 클래스 추가
                    quizResult.style.display="block"                //quizResult "block"으로 숨김 해제
                    quizConfirm.style.display="none"                //quizConfirm "none"으로 숨겨서 다시 한번 정답을 입력하는 문제를 막음
                } else {                                            //오답일시
                    // alert("오답")
                    quizView.classList.add("dislike")               //dislike 클래스 추가
                    quizResult.style.display="block"                //quizResult "block"으로 숨김 해제
                    quizConfirm.style.display="none"                //quizConfirm "none"으로 숨겨서 다시 한번 정답을 입력하는 문제를 막음
                }
            }
        }
    }
    
    //정답 클릭
    quizConfirm.addEventListener("click", answerQuiz)               //quizConfirm(정답 확인하기)를 클릭했을때 answerQuiz 함수 실행
    

728x90
반응형

'JS 응용하기' 카테고리의 다른 글

서치 이펙트_02 만들어보기!  (6) 2022.08.17
서치 이펙트_01 만들어보기!  (6) 2022.08.16
JS 응용하기 - 퀴즈 03  (7) 2022.08.06
JS 응용하기 - 퀴즈 02  (12) 2022.08.04
JS 응용하기 - 퀴즈 01  (16) 2022.08.04

댓글

#HASH_TAGS

-

1

테스트테스트 이건 또 뭐람 멈추지 않는 ' j ' 시리-즈 scroll-snap-type 제이쿼리 메서드 내일은 즐거운 월요일 HTML scroll-snap-align JQuery 오늘도 웹표준은.. 코드 테스트 오늘 조업 마감했습니다. 울적하니 꽃을 달아봤습니다 숙제가 다양해서 너무 좋아요 슬라이드 결과 : 월요일 코딩 ImageSlideEffect 필터선택자 화사한가요? 오징어 한마리 수확 완료! 다크모드 Method 오늘은 내가바로 오징어! 선택해주세요 오징어 1Kg 당 3000원 공부 오징어 두마리 포획 완료