728x90
๋ฐ์ํ
โญ๏ธ ๊ฐ๊ด์ ๋ค์ ๋ฌธํญ (์ ๋ต ์ค๋ต ํ์ธ) โญ๏ธ
01. ๋ง๋๋ ์์
1) ์ถ๋ ฅํ ๋ด์ฉ์ด ๋ค์ด์๋ ์์ ์ ํํ๊ธฐ
2) ์ง๋ฌธ๊ณผ ์ ๋ต ๋ด์ฉ, ํ์ํ ๊ฐ ์
๋ ฅํ๊ธฐ
3) ์ง๋ฌธ ๋ด์ฉ ์ถ๋ ฅํ๊ธฐ
4) ์ ๋ต ๋ด์ฉ ์จ๊ฒจ๋๊ธฐ
5) ์ ๋ต ํ์ธ ๋ฐ ๊ฒฐ๊ณผ๊ฐ ์ค์ ํ๊ธฐ
6) ์ ๋ต ๋ฒํผ์ ๋์ ์ค์ ํ๊ธฐ
02. < script > ์ ์์ฑํ๊ธฐ
// ๋ฌธ์ ์ ๋ณด
const quizInfo = [
{
answerType: "์น ๋์์ธ ๊ธฐ๋ฅ์ฌ (2014๋
01ํ)",
answerNum: "1",
answerAsk: "๋ค์์ ๋์์ธ ์๋ฆฌ ์ค ๋ฆฌ๋ฌ์ ํด๋น๋์ง ์๋ ๊ฒ์?",
answerChoice: {
1: "์ ์ด",
2: "๊ฐ์กฐ",
3: "๊ท ์ผ",
4: "์ ์ฆ",
},
answerResult: "3",
answerEx: "3๋ฒ // '๋ฆฌ๋ฌ(์จ๋)'์ ๊ฐ ๋ถ๋ถ ์ฌ์ด์ ์๊ฐ์ ์ธ ๊ฐํ ํ๊ณผ ์ฝํ ํ์ด ๊ท์น์ ์ผ๋ก ์ฐ์๋ ๋ ์๊ธฐ๋ ๋์์ธ์ ์๋ฆฌ๋ฅผ ๋งํฉ๋๋ค. '๊ท ์ผ'์ ๋ถํผ, ์ฆ๋ ๋ฑ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ์ ์์ฑ์์ ์๊ฐ์ ์ธ ์์ ๊ฐ์ ์ด๋ฃจ๋ ๊ฒ์ด๋ฉฐ, ๋ฆฌ๋ฌ์ ํด๋น๋์ง ์์ต๋๋ค.", // ์ ๋ต ํด์ค
},
{
answerType: "์น ๋์์ธ ๊ธฐ๋ฅ์ฌ (2014๋
01ํ)",
answerNum: "2",
answerAsk: "ํด์์ ์๋ ์กฐ์ฝ๋์ ์์ฐ์ ํ์ ์ํด ํ์ฐ์ ์ผ๋ก ๋ง๋ค์ด์ง ํํ๋ผ๋ ์์ฐ์ ๋ฒ์น์ด ๋ง๋ ์์ฐ์ ํํ๋ฅผ ์ฃผ์ฅํ ์ฌ๋์?",
answerChoice: {
1: "๋ฅด ์ฝ๋ฅด๋ท์ง์",
2: "ํํ๋ฅ",
3: "์๋ฅธํ์",
4: "๋ชจํ๋ก๋๊ธฐ",
},
answerResult: "4",
answerEx: "4๋ฒ // ๋ชจํ๋ก๋๊ธฐ์ ์ฌ์์์ ์ง๋ฌธ๋ด์ฉ์ ๋ํ ์ ๋ณด๋ฅผ ๋์ ํ ๋ชป์ฐพ๊ฒ ์ต๋๋ค. 'ํด์์ ์๋ ๋ฌด์ธ๋์์ ํ๋ก๋๊ธฐ'๋ผ๊ณ '๋ชจํ๋ก๋๊ธฐ'๋ฅผ ๊ธฐ์ตํด์ฃผ์ธ์ :) ",
},
// ...(์๋ต)...์ด์ด์ ๊ณ์ ์์ฑํฉ๋๋ค.
// ์ ํ์
const quizWrap = document.querySelector(".quiz__wrap");
function updateQuiz(){
const exam = [];
quizInfo.forEach((question, number) => {
exam.push(`
<div class="quiz">
<span class="quiz__type">${question.answerType}</span>
<h2 class="quiz__question">
<span class="number">${question.answerNum}. </span>
<div class="ask">${question.answerAsk}</div>
</h2>
<div class="quiz__view">
<div class="true">์ ๋ต์
๋๋ค!</div>
<div class="false">ํ๋ ธ์ต๋๋ค!!</div>
<div class="dog">
<div class="head">
<div class="ears"></div>
<div class="face"></div>
<div class="eyes">
<div class="teardrop"></div>
</div>
<div class="nose"></div>
<div class="mouth">
<div class="tongue"></div>
</div>
<div class="chin"></div>
</div>
<div class="body">
<div class="tail"></div>
<div class="legs"></div>
</div>
</div>
</div>
<div class="quiz__answer">
<div class="quiz__selects">
<label for="select1${number}">
<input type="radio" id="select1${number}" class="select" name="select${number}" value="1">
<span class="choice">${question.answerChoice[1]}</span>
</label>
<label for="select2${number}">
<input type="radio" id="select2${number}" class="select" name="select${number}" value="2">
<span class="choice">${question.answerChoice[2]}</span>
</label>
<label for="select3${number}">
<input type="radio" id="select3${number}" class="select" name="select${number}" value="3">
<span class="choice">${question.answerChoice[3]}</span>
</label>
<label for="select4${number}">
<input type="radio" id="select4${number}" class="select" name="select${number}" value="4">
<span class="choice">${question.answerChoice[4]}</span>
</label>
</div>
</div>
</div>
`);
});
exam.push(`
<div class="quiz__confirm">
<button class="check">์ ๋ต ํ์ธํ๊ธฐ</button>
<div class="ex"></div>
</div>
`);
quizWrap.innerHTML = exam.join('');
}
updateQuiz();
//์ ๋ต ํ์ธ
function answerQuiz(){
const quizSelects = document.querySelectorAll(".quiz__selects"); //๋ณด๊ธฐ
const quizView = document.querySelectorAll(".quiz__view"); //๊ฐ์์ง
//์ฌ์ฉ์๊ฐ ์ฒดํฌํ ๋ผ๋์ค ๋ฐ์ค == ๋ฌธ์ ์ ๋ต
quizInfo.forEach((question, number) => {
const quizSelectsWrap = quizSelects[number]; //์ ์ฒด ๋ณด๊ธฐ ๋ฐ์ค
const userSelector = `input[name=select${number}]:checked`; //์ฌ์ฉ์๊ฐ ํด๋ฆฐํ ๋ผ๋์ค ๋ฐ์ค
const userAnswer = (quizSelectsWrap.querySelector(userSelector) || {}).value
const quizView = document.querySelectorAll(".quiz__view");
console.log(quizSelects)
if(userAnswer == question.answerResult){
console.log("์ ๋ต")
quizView[number].classList.add("like");
} else {
console.log("์ค๋ต")
quizView[number].classList.add("dislike");
const div = document.createElement("div");
quizSelectsWrap.appendChild(div).innerHTML = `<p class="result">${question.answerEx}</p>`;
}
});
}
document.querySelector(".quiz__confirm .check").addEventListener("click", answerQuiz); // ๋งจ ๋ฐ์ ์์ด์ผ ํจ.
03. ๊ฒฐ๊ณผ๋ณด๊ธฐ
728x90
๋ฐ์ํ
'Javascript > Effect' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
search Effect (2) (3) | 2022.08.18 |
---|---|
search Effect (1) (2) | 2022.08.18 |
ํด์ฆ ๋ง๋ค๊ธฐ (4) ๊ฐ๊ด์ ๋จ์ผ ๋ฌธํญ (7) | 2022.08.09 |
ํด์ฆ ๋ง๋ค๊ธฐ (3) ์ฃผ๊ด์ ๋ค์ ๋ฌธํญ (6) | 2022.08.05 |
ํด์ฆ ๋ง๋ค๊ธฐ (2) ์ฃผ๊ด์ ๋จ์ผ ๋ฌธํญ (4) | 2022.08.04 |
๋๊ธ