ํด์ฆ ๊ฐ๊ด์ ์ ํ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ์น๋์์ธ๊ธฐ๋ฅ์ฌ ํ๊ธฐ๋ฌธ์ ๋ฅผ ๊ฐ๊ด์ ์ ํ ํด์ฆ๋ก ์ฌ๋ฌ๊ฐ ์ ์ํด๋ณด๊ธฐ
ํ๋์ ๊ฐ๊ด์ ๋ฌธ์ ๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๋ง๋ค์ด๋ณด์!
#1. ์ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค
์์์๊ฒ ํด๋น๋ช
์นญ(ex: quizType)์ ์ ์ธํด์ฃผ๊ณ ์ฟผ๋ฆฌ์
๋ํฐ(ํ๊ทธ, ์์ด๋, ํด๋์ค๋ฅผ ์ ํํ ์ ์๋ ๊ฒ)๋ก ์ ํํ ์์๋ฅผ ์ฐพ์์ ๋ฃ์ด๋ณด์!
//์ ํ์
const quizType = document.querySelector(".quiz__type"); //ํด์ฆ์ข
๋ฅ
const quizNumber = document.querySelector(".quiz__question .number"); //ํด์ฆ ๋ฒํธ
const quizAsk = document.querySelector(".quiz__question .ask"); //ํด์ฆ ์ง๋ฌธ
const quizConfirm = document.querySelector(".quiz__answer .confirm"); //ํด์ฆ ํ์ธ ๋ฒํผ
const quizResult = document.querySelector(".quiz__answer .result"); //์ ๋ต ๊ฒฐ๊ณผ
const quizView = document.querySelector(".quiz__view"); //๊ฐ์์ง
const quizSelects = document.querySelector(".quiz__selects"); //๊ฐ๊ด์ ๋ณด๊ธฐ
const quizChoice = quizSelects.querySelectorAll(".choice"); //๊ฐ๊ด์ ๋ณด๊ธฐ
const quizSelect = quizSelects.querySelectorAll(".select"); //๊ฐ๊ด์ ์ ํ
//quizSelects.querySelectorAll(".select") = ํด์ฆ ์
๋ ํฐ ์์ ์
๋ ํฐ๋ฅผ ์ฐพ๊ฒ ํด์ค๋ค.
//choice์ select๋ ๋ณต์๋ก ๊ตฌํ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ querySelectorAll์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ ํํด์ค๋ค.
=> document ๋์ quizSelects๋ฅผ ์ ์ธํ ์ด์ ๋ ๋ง์ฝ ๋ฌธ์ ๊ฐ 100๊ฐ ์ด์์ด ๋๋ฉด ์ ํ๊ณผ ๋ณด๊ธฐ๋ 400๊ฐ ์ด์์ด ๋๊ธฐ ๋๋ฌธ์ document์์ ์ฐพ๋ ๊ฒ ๋ณด๋จ ์์๊ฐ ์์๋์ด ์๋ ๋ถ๋ชจ ์์๋ฅผ ์จ์ฃผ์ด์ผ ๋ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฒฐ๊ณผ ๋ณด๊ธฐ
#2. ๋ฌธ์ ์ ๋ณด ์๋ฐ์คํฌ๋ฆฝํธ ์์ค
๋ฐฐ์ด ์ ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ ํค์ ๊ฐ์ผ๋ก ์ฌ๋ฌ๊ฐ์ ๋ฌธ์ ์ ๋ณด(๋ฐ์ดํฐ)๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅ์ํจ๋ค.
//๋ฌธ์ ์ ๋ณด
const quizInfo = [
{
answerType : "์น๋์์ธ๊ธฐ๋ฅ์ฌ 2010๋
01ํ",
answerNum : "1",
answerAsk : "๋ถ์ , ํ์ ์ด๋ผ๋ ์๋ฏธ๋ก ์ฑํ
, ์จ๋ผ์ธ ๊ฒ์ ๋ฑ ๋คํฌ์ํฌ ํ๊ฒฝ์์ ์์ ์ ๋์ ํ์ฌ ์ปค๋ฎค๋์ผ์ด์
์ ์ฐธ์ฌํ๋ ๊ฐ์์ ๊ทธ๋ฆผ ๋๋ ์์ด์ฝ์ ๋ปํ๋ ์ธํฐ๋ท ์ฉ์ด๋ ๋ฌด์์ธ๊ฐ?",
answerChoice : ["์๋ฐํ", "์ฟ ํค", "ํฌํธ", "ํ๋ธ"],
answerResult : "1",
answerEx : "์ ๋ต์ ์๋ฐํ์ด๋ค. ๋ถ์ , ํ์ ์ด๋ผ๋ ์๋ฏธ๋ก ์ฑํ
, ์จ๋ผ์ธ ๊ฒ์ ๋ฑ ๋คํฌ์ํฌ ํ๊ฒฝ์์ ์์ ์ ๋์ ํ์ฌ ์ปค๋ฎค๋์ผ์ด์
์ ์ฐธ์ฌํ๋ ๊ฐ์์ ๊ทธ๋ฆผ ๋๋ ์์ด์ฝ์ ๋ปํ๋ ์ธํฐ๋ท ์ฉ์ด๋ฅผ ์๋ฐํ๋ผ๊ณ ํ๋ค."
}
]
#3. ๋ฌธ์ ์ถ๋ ฅํ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค
textContent๋ฅผ ์ฌ์ฉํ์ฌ ํด์ฆ ๋ฌธ์ ๋ฅผ ์ถ๋ ฅํด๋ณด์. ์ด๋ ๊ฐ๊ด์ ๋ณด๊ธฐ์ ์ ํ์นธ์ ๋ณต์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ์ถ๋ ฅํด๋ณด์!
function updateQuiz(){
//ํด์ฆ ์ข
๋ฅ, ๋ฒํธ, ์ง๋ฌธ, ์ ๋ต(ํด์ค) ์ถ๋ ฅ
quizType.textContent = quizInfo[0].answerType;
quizNumber.textContent = quizInfo[0].answerNum + ". ";
quizAsk.textContent = quizInfo[0].answerAsk;
quizResult.textContent = quizInfo[0].answerEx; //์ ๋ต ๋์ ํด์ค์ ๋ฃ์ด์ ๋ต๋์ ํด์ค์ด ๊ตฌํ๋๋๋ก ํ๋ค.
//๊ฐ๊ด์ ๋ณด๊ธฐ ์ถ๋ ฅ
//for๋ฌธ
for( let i=0; i<4; i++){
quizChoice[i].textContent = quizInfo[0].answerChoice[i];
}
//forEach๋ฌธ
quizChoice.forEach(function (e, i){
quizChoice[i].textContent = quizInfo[0].answerChoice[i];
});
// ํด์ค ์จ๊ธฐ๊ธฐ
quizResult.style.display = "none";
}
updateQuiz(); // = ํจ์์คํ๋ฌธ
function ํจ์๋ช
์นญ(){};
์์ ๊ฐ์ด ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํด๋นํ๋ ์คํฌ๋ฆฝํธ(๋ฐ๋ณต๋ฌธ, ์ถ๋ ฅ ๋ฑ)๋ฅผ ๋ฌถ์ด์ฃผ์ด์ ์ถฉ๋ ๋ฐ ์ค๋ฅ์ ๊ฐ๋ฅ์ฑ์ ์์ ์ค๋ค.
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ผญ ๊ดํธ๋ฅผ ๋ซ์ ๋ค ํจ์ ์คํ๋ฌธ์ ์์ฑํด์ฃผ์ด์ผ ์คํฌ๋ฆฝํธ๊ฐ ์ ์์ผ๋ก ์คํ๋๋ค.
<for๋ฌธ์ผ๋ก ๊ฐ๊ด์ ๋ณด๊ธฐ ์ถ๋ ฅ>
i๊ฐ 0์ผ ๋ i๊ฐ 4๋ณด๋ค ์์ 3๊น์ง ๋ฐ๋ณต์ํจ๋ค. ๋ฐ๋ณตํ๋ฉด์ ๊ฐ๊ฐ์ quizChoice์ answerChoice๋ฅผ ์์๋๋ก ๋์ ํ์ฌ ๊ตฌํ์ํจ๋ค.
for( let i=0; i<4; i++){
quizChoice[i].textContent = quizInfo[0].answerChoice[i];
}
ํ ๋ฐ์ดํฐ๋ ๋จ์์ด๊ธฐ ๋๋ฌธ์ quizInfo.length๋ฅผ ์ฌ์ฉํ๋ฉด 1๋ฒ๋ฐ์ ๋ฐ๋ณต์ด ๋์ง ์์์ ์ค๋ฅ๊ฐ ๋๋ค. ๋๋ฌธ์ ํด๋นํ๋ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ง๊ฒ ์ธ๋ฑ์ค๋ก ์ ์ธํด์ฃผ์ด์ผ ์ ๋๋ก ๊ตฌํํด์ฃผ์ด์ผ ํ๋ค.
๋ง์ฝ length๋ก ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด i < quizInfo[0].answerChoice[i].length; ๋ก ํํํ๋ฉด answerChoice์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๋ ๋์ง ์๋๋ค.
<forEach๋ฌธ์ผ๋ก ๊ฐ๊ด์ ๋ณด๊ธฐ ์ถ๋ ฅ>
๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๊ด์ ๋ณด๊ธฐ ์ถ๋ ฅ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ณต๋์ด์ผ ํ๋ quizChoice๋ก forEach๋ฌธ์ ์์ฑํด์ผ ํ๋ค.
4๋ฒ์ ๋ฐ๋ณตํ์ฌ quizChoice์ answerChoice๋ฅผ ์์๋๋ก ๋์
ํ์ฌ ๊ตฌํ์ํจ๋ค.
quizChoice.forEach(function (e, i){
quizChoice[i].textContent = quizInfo[0].answerChoice[i];
});
#4. ์ ๋ต ํ์ธํ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค
ํจ์๋ฅผ ์ด์ฉํ์ฌ for๋ฌธ์ผ๋ก ์์ฑํ ์ ๋ต ํ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฌถ์ด๋ณด์.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ํจ์ ์คํ๋ฌธ์์ addEventListener๋ฅผ ํตํด ๊ตฌํ๋๋ ์ด๋ฒคํธ๋ก ์ ๋ต์ ํ์ธํด๋ณด์!
//์ ๋ต ํ์ธ
function answerQuiz(){
//์ฌ์ฉ์๊ฐ ์ ํํ ์ ๋ต์ด ๋ฌธ์ ์ ๋ต๊ณผ ๊ฐ์์ง ํ์ธํ๊ธฐ (์ฌ์ฉ์๋ต == ๋ฌธ์ ์ ๋ต)
//์ฌ์ฉ์๊ฐ ์ ํํ input์์ css ์์ฑ์ธ checked ์คํ์ผ์ด ๋ํ๋ ๋ ์ ๋ต์ ํ์ธํ ์ ์๋ค.
for( let i=0; i<quizSelect.length; i++){
if(quizSelect[i].checked == true){ //๋ณด๊ธฐ์ ์ฒดํฌ๊ฐ ๋์ด์๋ ์ํ์ผ ๊ฒฝ์ฐ
//์ฒดํฌ๋ ๋ฒํธ์ ์ ๋ต ๋ฒํธ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ true
if(quizSelect[i].value == quizInfo[0].answerResult){
// alert("์ ๋ต");
quizView.classList.add("like");
} else {
// alert("์ค๋ต");
quizView.classList.add("dislike");
quizResult.style.display = "block";
quizConfirm.style.display = "none";
}
} else {}
}
}
quizConfirm.addEventListener("click", answerQuiz); //ํจ์์คํ๋ฌธ
//๊ธฐ์กด ํจ์์คํ๋ฌธ์ธ answerQuiz();๋์ addEventListener๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ํฌ ์๋ ์๋ค.
for๋ฌธ ์ ๋ฆฌ
i๊ฐ 0์ผ ๋, quizSelect์ ๊ธธ์ด๋งํผ ๋ฐํํด๋ผ.
๊ทธ๋ฆฌ๊ณ ์ด 4๊ฐ์ quizSelect๋ค ์ค ํ๊ฐ์ง๋ฅผ ์ฒดํฌ๋ฅผ ํ์ ๋ true์ผ ๊ฒฝ์ฐ, ๋ ๋ง์ฝ ๊ทธ ์ฒดํฌํ ๊ฐ์ด ์ ๋ต ๊ฐ๊ณผ ๊ฐ์ ๋ classList.add()๋ฅผ ๊ตฌํํ๋ผ.
false์ผ ๊ฒฝ์ฐ์๋ ํด๋นํ๋ classList.add()๋ฅผ ๊ตฌํํด๋ผ.
๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ์ด๋ฒคํธ๋ quizConfirm์ ํด๋ฆญํ์ ๋ ์คํ๋๋๋ก ํ์ฌ๋ผ.
!๊ธฐ์ตํด์ผ ํ ๋ฌธ๋ฒ!
ํจ์๋ฅผ ์ด์ฉํ ์คํฌ๋ฆฝํธ ๋ฌถ๊ธฐ
์ฌ๋ฌ๊ฐ์ ์คํฌ๋ฆฝํธ(๋ฐ์ดํฐ ์ ์ฅ๊ณผ ์ถ๋ ฅ, ๋ฐ๋ณต๋ฌธ ๋ฑ)๊ฐ ์ถฉ๋๋์ง ์๋๋ก ํ ๋ฉ์ด๋ฆฌ ์ฉ ํจ์๋ก ๋ฌถ์ด์ค๋ค.
function answerQuiz(){
for(){}
};
answerQuiz();
if๋ฌธ์์ css์์ฑ ๊ฐ์ ธ์ค๊ธฐ
css์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฑ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ .ํด๋์ค ๋ช
์ ์ ์ธํด์ฃผ๋ฉด ๋๋ค.
if(quizSelect[i].checked == true){}
๊ฒฐ๊ณผ๋ณด๊ธฐ
'EFFECT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Search] ๊ฒ์ ์ ํ ์ฌ์ดํธ ๋ง๋ค๊ธฐ02 (4) | 2022.08.17 |
---|---|
[Search] ๊ฒ์ ์ ํ ์ฌ์ดํธ ๋ง๋ค๊ธฐ01 (5) | 2022.08.17 |
ํด์ฆ ๋ฌธ์ ๋ง๋ค๊ธฐ03 (4) | 2022.08.06 |
ํด์ฆ ๋ฌธ์ ๋ง๋ค๊ธฐ02 (3) | 2022.08.05 |
ํด์ฆ ๋ฌธ์ ๋ง๋ค๊ธฐ01 (1) | 2022.08.04 |
๋๊ธ