ํด์ฆ ๊ฐ๊ด์ ์ ํ : ์ฌ๋ผ์ด๋ ํ์
์ด๋ฒ ์๊ฐ์๋ ํด์ฆ๋ฅผ ์ฌ๋ผ์ด๋ ํ์์ผ๋ก ์ ์ํด๋ด
์๋ค!
๊ทธ ๋ค ์ ๋ต ๊ฐฏ์์ ๋ฌธ์ ์ ์ด ๊ฐฏ์, ์ด ์ ์๋ฅผ ๊ตฌํ๋ ์์ ๋ง๋ค์ด ๋ด
์๋ค.
! ๋ฏธ๋ฆฌ ๋ณด๊ธฐ !
#1. ํด์ฆ ์ธํฌ (๋ฌธ์ ๋ชจ์) ๋ง๋ค๊ธฐ
๋ฐ์ดํฐ ์ ์ฅ ํ์
์ธ ๋ฐฐ์ด์ ๊ฐ์ฒด๋ฅผ ํตํด ๊ฐ๊ฐ์ ํด์ฆ ๋ฌธ์ ๋ฅผ ํค์ ๊ฐ์ผ๋ก ๋ฐ์ดํฐํ ์์ผ ์ ์ฅํด์ค๋๋ค.
์ง๋ ํด์ฆ์ ๋ฌ๋ฆฌ ๊ฐ์ฒด์์ ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ์ ์ฅํด์ค๋๋ค.
const quizInfo = [
{
answerType : "์น๋์์ธ๊ธฐ๋ฅ์ฌ 2015๋
01ํ",
answerNum : "1",
answerAsk : "์น ๋์์ธ์ ๋ํ ์ค๋ช
์ผ๋ก ๊ฑฐ๋ฆฌ๊ฐ ๋จผ ๊ฒ์?",
answerChoice : [
"์น ํ์ด์ง๋ฅผ ๋์์ธํ๊ณ ์ ์ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.",
"์น ๋์์ธ์ ๊ฐ์ธ์ฉ ํํ์ด์ง ์ด์ธ์ ๊ธฐ์
์ฉ ๋ฑ ๋ค์ํ๋ค.",
"์น ๋์์ธ์ Web๊ณผ Design์ด๋ผ๋ ๋ ๊ฐ์ง ๊ฐ๋
์ด ๊ฒฐํฉ๋ ๊ฒ์ด๋ค.",
"๊ธฐ์
, ๋จ์ฒด, ํ์ฌ์ ํน์ง๊ณผ ์ฑ๊ฒฉ์ ๋ง๋ ์๊ฐ์ ์์ง๋ฌผ์ ๋งํ๋ค.",
],
answerResult : "๊ธฐ์
, ๋จ์ฒด, ํ์ฌ์ ํน์ง๊ณผ ์ฑ๊ฒฉ์ ๋ง๋ ์๊ฐ์ ์์ง๋ฌผ์ ๋งํ๋ค.",
answerEx : "๊ธฐ์
์ ์์งํ๋ ๊ฒ์ CI์ด๋ค.",
},
{
answerType : "์น๋์์ธ๊ธฐ๋ฅ์ฌ 2015๋
01ํ",
answerNum : "2",
answerAsk : "๋์์ธ์ ์ฌ๋ฏธ์ฑ์ ๋ํ ์ค๋ช
์ผ๋ก ๋ง๋ ๊ฒ์?",
answerChoice : [
"์๋ฆ๋ค์์ ๋๋ผ๋ ๋ฏธ์ ์์์ด๋ฉฐ ์ฃผ๊ด์ ์ผ ์ ์๋ค.",
"๊ฐ์ฑ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋ชจ๋ ์ฌ๋์๊ฒ ๋์ผํ๊ฒ ๋ํ๋๋ค.",
"ํฉ๋ฆฌ์ ์ด๋ฉฐ ๊ฐ๊ด์ ์ธ ๋ฏธ์ ํ๋์ด๋ค.",
"๊ตญ๊ฐ, ๋ฏผ์กฑ, ๊ด์ต, ์๋์ ๊ด๊ณ์์ด ๋์ผํ๊ฒ ๋ํ๋๋ค.",
],
answerResult : "์๋ฆ๋ค์์ ๋๋ผ๋ ๋ฏธ์ ์์์ด๋ฉฐ ์ฃผ๊ด์ ์ผ ์ ์๋ค.",
answerEx : "์ฌ๋ฏธ์ฑ : ํํ์ ์์ฑ์กฐํ๋ฅผ ์ด๋ฃจ์ด '์๋ฆ๋ค์'์์ฑ์ง์ ๋ง๋ค์ด๋ด๋ ๊ฒ ๋์คํ์ ์กฐํ์ฑ์ด๋ผ๊ณ ๋ ๋งํ๋ฉฐ, ์๋์ ์ธ ๋ฏธ์ ๊ธฐ์ค, ์ฌํ์ ์ธ ๊ฐ์ฑ์ ๋ฐ๋ผ ๋ณํ๋๋ค.",
},
{
answerType : "์น๋์์ธ๊ธฐ๋ฅ์ฌ 2015๋
01ํ",
answerNum : "3",
answerAsk : "๋์ ๋๋น์ ํด๋นํ์ง ์๋ ๊ฒ์?",
answerChoice : [
"์์ ๋๋น",
"๋ช
๋ ๋๋น",
"๋ณด์ ๋๋น",
"ํ๋ ๋๋น",
],
answerResult : "ํ๋ ๋๋น",
answerEx : "์๋ก ๊ฐ๊น์ด ๋์ฌ์ง ๋๊ฐ ์ด์์ ์์ ๋์์ ๋ณผ ๋ ์ผ์ด๋๋ ์์ฑ๋๋น๋ฅผ ๋งํ๋ค. ๋์๋๋น๋ ์์ฑ์ 3์์ฑ๋ค์ ์ฐจ์ด์ ๋ฐ๋ฅธ ์ง๊ฐ๋ณํ์ ๋ฐ๋ผ์ ๋ช
๋๋๋น, ์์๋๋น, ์ฑ๋๋๋น, ๋ณด์๋๋น๋ก ๊ตฌ๋ถ๋๋ค. ์ฌ๋ฆฌ์ ๊ดํ ์์ฉ์ด. ์๋ก ๋ฐ๋๋๊ฑฐ๋ ๋๋จํ ํ๋ฆฌ๋ ๊ฐ๊ฐ, ๊ฐ์ ๋ฑ์ด ๋์์ ๋น๊ตํ๋ฉด, ๊ทธ ํ์ชฝ ๋๋ ์์ชฝ์ ํน์ฑ์ด ํ์ธต ๋ช
๋ฐฑํด ์ง๋ ์ผ. ์๋ฅผ๋ค๋ฉด, ๋๊ฐ์ ํ์์ ์(ๅ)์ ํฐ์ข
์ด์ ๊ฒ์ ์ข
์ด ์์ ๋๊ณ ๋ณผ ๋ ๊ฒ์์ข
์ด ์์์๋ ํฌ๊ฒ ๋ณด์ด๊ณ , ํฐ์ข
์ด ์์์๋ ๊ฒ๊ฒ ๋ณด์ด๋ ๊ฒ ๋ฑ์ด ๋์์ ๋๋น์ด๋ค.",
},...........
//์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ญ ๋์ดํด์ค๋๋ค.
#2. ํจ์์ ๋ณ์๋ฅผ ํตํด ํด์ฆ ๋ฌธ์์ด ๋ฃ๊ธฐ
๋ฐ์ดํฐ๋ฅผ ์คํํด ์ค ํจ์์์ ๋งค๊ฐ๋ณ์์ ํ
ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๋น ๋์ ์ถ๋ ฅํด๋ด
์๋ค!
์ด ๋ ์์ ์์ ์ ์ฅํ ๊ฐ์ html๋ก ์์ฑํ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ html๋ก ์์
ํ๋ ์ฝ๋๋ค์ ์ฃผ์์ฒ๋ฆฌ ํ๊ฑฐ๋ ์ญ์ ํด์ค๋๋ค!
//์ ํ์
const quizType = document.querySelector(".quiz__type"); //ํด์ฆ ํ์
const quizQuestion = document.querySelector(".quiz__question"); //๋ฌธ์ ๋ฒํธ์ ์ง๋ฌธ์ quizQuestion ์์์ ์ ์ฅ
const quizSelects = document.querySelector(".quiz__selects"); //๊ฐ๊ด์ ๋ณด๊ธฐ
const quizResult = document.querySelector(".quiz__answer .result"); //๋ฌธ์ ์ ๋ต
const quizCunfirm = document.querySelector(".quiz__answer .confirm");; //์ ๋ตํ์ธ๋ฒํผ
const quizView = document.querySelector(".quiz__view");
let quizCount = 0;
let quizScore = 0; //๋งํ ๋ฌธ์ ์ ๊ฐ์
//๋ฌธ์ ์ถ๋ ฅ (๋ฌธ์ ๋ฒํธ, ๋ฌธ์ ์ง๋ฌธ)
//๋งค๊ฐ๋ณ์์ ํ
ํ๋ฆฟ ๋ฌธ์์ด์ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์ ์ฅํด์ค๋ค.
const updateQuiz = (index) => {
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>
`;
//๋ฌธ์ ์ถ๋ ฅ
quizType.innerHTML = quizInfo[index].answerType; //ํด์ฆ ์ข
๋ฅ
quizQuestion.innerHTML = questionTag; //quizQuestion์ questionTag์ ์ ์ฅ๋ ๋ฌธ์ ๋ฒํธ์ ์ง๋ฌธ์ innerHTML์ ํตํด ๋ฃ์ด์ค๋ค.
quizSelects.innerHTML = choiceTag; //๊ฐ๊ด์ ๋ฌธํญ
quizResult.innerHTML = quizInfo[index].answerEx; //ํด์ค
const quizChoice = quizSelects.querySelectorAll(".choice"); //๋ณด๊ธฐ๊ฐ 4๊ฐ๋ผ์ all์ฌ์ฉํ์ฌ ๋ชจ๋ ์ ํํด์ค๋ค.
for(let i=0; i<quizChoice.length; i++){
quizChoice[i].setAttribute("onclick", "choiceSelected(this)");
}
//๋ฌธ์ ์ ํด์ค ์จ๊ธฐ๊ธฐ
quizResult.style.display = "none";
quizCunfirm.style.display = "none";
}
updateQuiz(quizCount); //์คํ๋ฌธ
#3. ํจ์์ ์กฐ๊ฑด๋ฌธ์ ์์ฑํ์ฌ ์ ๋ต ํ์ธํ๊ธฐ
+ ๋ฌธ์ ๊ฐฏ์์ ๋งํ ๊ฐฏ์ ํ์ธํ๊ธฐ
์ต๋ช ํจ์์ ๋งค๊ฐ๋ณ์, if๋ฌธ์ ํตํด ์ฌ์ฉ์๊ฐ ์ฒดํฌํ ๊ฐ๊ณผ ์ ๋ต ๊ฐ์ ๋น๊ตํ๋ ์์ ๋ง๋ค์ด๋ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ ์๋ฅผ ๊ตฌํ๋ ์๋ ๊ตฌํด๋ด ์๋ค!
//์ ๋ต ํ์ธํ๊ธฐ
const choiceSelected = (answer) => {
let userAnswer = answer.textContent; //์ฌ์ฉ์๊ฐ ์ฒดํฌํ ์ ๋ต
let currentAnswer = quizInfo[quizCount].answerResult; //๋ฌธ์ ์ ๋ต
if(userAnswer == currentAnswer){
quizView.classList.add("like");
quizScore++; //์ ๋ต์ผ ๋ ๋ง๋ค Score ํ๋์ฉ ์ฌ๋ฆฌ๊ธฐ
console.log("์ ๋ต");
} else {
quizView.classList.add("dislike");
quizResult.style.display = "block";
console.log("์ค๋ต");
}
quizCunfirm.style.display = "block";
}
// ์ ๋ต ํ์ธ ํ ๋ค์๋ฌธ์ ์ข
๋ฃ์ ๊ฐฏ์ ํ์ธ
const answerQuiz = () => {
//๋ง์ง๋ง ๋ฌธ์ ์๋ฃ ํ ์ข
๋ฃ
let scoreSet = Math.floor(quizScore * 100 / quizInfo.length); // ์ ์ ๊ตฌํ๋ ์(๋งํ ๊ฐฏ์ x 100 ๋๋๊ธฐ ์ด ๋ฌธ์ ๊ฐฏ์)๋ฅผ scoreSet์ ๋์
if(quizInfo.length -1 == quizCount){ // quizInfo.length๋ ๊ธธ์ด ๊ฐ์ด์ง๋ง ํด์ฆ ์นด์ด๋๋ ์ธ๋ฑ์ค ๊ฐ์ด๊ธฐ ๋๋ฌธ์ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ -1์ ํด์ฃผ์ด์ผ ํ๋ค.
if(scoreSet >= 60){ //์ ์กฐ๊ฑด์ด ์คํ๋์์ ๋ scoreSet์ด ์กฐ๊ฑด์ ๋ง์ผ๋ฉด ์ฐธ, ํ๋ฆฌ๋ฉด ๊ฑฐ์ง์ ๋ฐํ.
quizCunfirm.textContent = `๋น์ ์ ์ด ${quizInfo.length}๋ฌธ์ ์ค ${quizScore}๋ฌธ์ ๋ฅผ ๋ง์ถ์
จ์ต๋๋ค. ์ ์: ${scoreSet}์ ! ํฉ๊ฒฉ !`;
} else {
quizCunfirm.textContent = `๋น์ ์ ์ด ${quizInfo.length}๋ฌธ์ ์ค ${quizScore}๋ฌธ์ ๋ฅผ ๋ง์ถ์
จ์ต๋๋ค. ์ ์: ${scoreSet}์ ! ๋ถํฉ๊ฒฉ !`;
}
}
quizCount++;
updateQuiz(quizCount);
quizView.classList.remove("like", "dislike"); //๋ค์ ๋ฌธ์ ํด๋ฆญ์ ๊ฐ์์ง ํ์ ฑ ๋ฆฌ์
}
quizCunfirm.addEventListener("click", answerQuiz);
'EFFECT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[EFFCET] ์ด๋ฏธ์ง : ์ฌ๋ผ์ด๋ ์ ํ02 (3) | 2022.08.30 |
---|---|
[EFFECT] ์ด๋ฏธ์ง : ์ฌ๋ผ์ด๋ ์ ํ01 (2) | 2022.08.30 |
[QUIZ] ํด์ฆ ๋ง๋ค๊ธฐ05 : ๊ฐ๊ด์ 60๋ฌธ์ (4) | 2022.08.25 |
[Search] ๊ฒ์ ์ ํ ์ฌ์ดํธ ๋ง๋ค๊ธฐ03 (4) | 2022.08.23 |
[Search] ๊ฒ์ ์ ํ ์ฌ์ดํธ ๋ง๋ค๊ธฐ02 (4) | 2022.08.17 |
๋๊ธ