ํด์ฆ ๋ง๋ค๊ธฐ 04
์ด๋ฒ ์๊ฐ์๋ ๊ทธ ๋์ ๋ฐฐ์ ๋ JavaScript๋ฅผ ์ด์ฉํ์ฌ ํด์ฆ๋ฅผ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ฒ ํ์ต ๋ด์ฉ์ ์ ํ์ฉํ์ฌ ์น๋์์ธ๊ธฐ๋ฅ์ฌ ์ํ ๊ณต๋ถ ์ด์ฌํ ํด ๋ด
์๋ค!
๋ณ์(let)์ ์์(const)์ ์ฟผ๋ฆฌ ์
๋ ํฐ ๊ฐ์ ์ ์ฅ์ํค๊ณ , ๊ทธ ๋์ ๋ฐฐ์ด ์คํฌ๋ฆฝํธ๋ฅผ
ํตํด ๋ฌธ์ ์ ๋ณด๋ฅผ HTML ํ๊ทธ์ ์ถ๋ ฅ์ํค๊ณ , ์ ๋ต์ ์จ๊ฒผ๋ค๊ฐ ๋ฒํผ์ ๋๋ฌ ๋ณด์ด๊ฒ ํ๋
๋ฑ์ ๋ค์ํ ํจ๊ณผ๋ค์ ๊ตฌํ์์ผ๋ด
์๋ค!
๊ฐ๊ด์ ์ ํ
๋ค ๋ฒ์งธ ์ฃผ๊ด์(์ฌ๋ฌ ๋ฌธ์ ) ์ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ค์ ๋ถ์ฐ ์ค๋ช
(์ฃผ์ ์ฒ๋ฆฌ๋จ)์ด๋ค.
HTML๊ณผ CSS ์์ค๋ฅผ ํจ๊ป ๋ณด๊ณ ์ถ๋ค๋ฉด ๋งจ ์๋์ '์๋ณธ ์์ค ๋ณด๊ธฐ' ๋ฒํผ์ ๋๋ฅผ ๊ฒ.
// ์ ํ์
// quizChoice์ quizSelect๋ ์ด 4๊ฐ์ด๋ฏ๋ก ๋ค์ All์ ๋ถ์ฌ์ค๋ค.
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"); // ๊ฐ๊ด์ ๋ณด๊ธฐ --> document ์๋ quizSelects ์จ์ฃผ๋ฉด ๋ก๋ฉ ์๊ฐ ์ ์ฝ๋จ
const quizSelect = quizSelects.querySelectorAll(".select"); // ๊ฐ๊ด์ ๋ณด๊ธฐ
// ๋ฌธ์ ์ ๋ณด
// answerChoice๋ ๊ฐ์ฒด ์์ ๋ฐฐ์ด์ด ๋ค์ด๊ฐ ๊ตฌ์กฐ
const quizInfo = [
{
answerType: "์น๋์์ธ๊ธฐ๋ฅ์ฌ ํ๊ธฐ ๊ธฐ์ถ๋ฌธ์ (2015.7.19) ์ฌ๊ตฌ์ฑ ๋ชจ์๊ณ ์ฌ",
answerNum: "1",
answerAsk: "์์ 3์์ฑ ์ค ์ฌ๋์ ๋์ด ๊ฐ์ฅ ์๋ฏผํ๊ณ ๊ฐํ๊ฒ ๋ฐ์ํ๋ ๋๋น๋?",
answerChoice: ["๋ช
๋๋๋น", "์์๋๋น", "๋ณด์๋๋น", "์ฑ๋๋๋น"],
answerResult: "1",
answerEx: "๋ช
๋๋๋น๊ฐ ์์ 3์์ฑ ์ค ๊ฐ์ฅ ์ฌ๋์ ๋์ ์๋ฏผํ ์์ฑ์ด๋ค."
}
]
์์ ์์์ ๊ฐ์ด ์์(const)๋ฅผ ํ์ํ ๋งํผ ์์ฑํ ํ HTML ์์ญ์ div, ์๋งจํฑ ํ๊ทธ ๋ฑ์ class๋ช
๊ณผ ์ฐ๊ฒฐ์ํจ๋ค.
๋ํ ์ด๋ฒ ํฌ์คํ
์์๋ ๊ฐ๊ด์(4๊ฐ ์ค ํ๋๋ฅผ ์ ํ) ํด์ฆ๋ฅผ ๋ง๋ค๊ธฐ ๋๋ฌธ์ answerChoice์ ๋ 4๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ ์ ์ฅ์ํฌ
ํ์๊ฐ ์์ผ๋ฉฐ ์ด์ ๋ฐ๋ผ answerChoice๋ ๊ฐ์ฒด ์์ ๋ฐฐ์ด์ด ๋ค์ด๊ฐ ๊ตฌ์กฐ๋ก ๋ง๋ค๋๋ก ํ๋ค.
// ๋ฌธ์ ยท๋ณด๊ธฐ์ถ๋ ฅ - ํจ์๋ก ๊ฐ์ธ๊ธฐ
// ๋ฌธ์ ๊ฐ ๋ง์์ง์๋ก ์๋ก ์ถฉ๋๋ ์๋ ์๊ธฐ ๋๋ฌธ์ function์ ๋ง๋ค์ด์ ์์ ์ง์ด๋ฃ์
function updateQuiz() {
// ๋ฌธ์ ์ถ๋ ฅ (innerText ๋์ textContent๋ฅผ ์ฌ์ฉํด๋ ๋จ / ์ต์คํ๋ก์ด ํธํ๋๋ ๊ฑด textContent)
quizType.textContent = quizInfo[0].answerType; // quizInfo๋ ๋ฐฐ์ด ์ ๊ฐ์ฒด 1๊ฐ ๋ฟ์ด๋ฏ๋ก [0]์ด๋ค.
quizNumber.textContent = "0" + quizInfo[0].answerNum + ". ";
quizAsk.textContent = quizInfo[0].answerAsk;
quizResult.textContent = quizInfo[0].answerEx;
// ๋ณด๊ธฐ ์ถ๋ ฅ
for(let i = 0; i < quizSelect.length; i++) { // quizSelect = 4 --> ํด๋์ค select๊ฐ ์ด 4๊ฐ์ด๋ฏ๋ก
quizChoice[i].textContent = quizInfo[0].answerChoice[i]; // quizChoice์ answerChoice๋ ์ด 4๋ฒ ๋ฐ๋ณต
}
// ํด์ค ์จ๊ธฐ๊ธฐ
quizResult.style.display = "none";
}
updateQuiz(); // ์ด๊ฑฐ ์จ์ค์ผ ํจ์ ์คํ๋จ
๋ฌธ์ ์ถ๋ ฅ๊ณผ ๋ณด๊ธฐ ์ถ๋ ฅ, ํด์ค ์จ๊ธฐ๊ธฐ๋ updateQuiz() ํจ์๋ก ๊ฐ์ธ์ฃผ๋๋ก ํ๋ค.
๋ฌธ์ ๋ฅผ ๋ง์ด ๋ง๋ค์๋ก ์๋ก ์ถฉ๋์ด ๋ ์ํ์ด ์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ฐ์ ์์
์ ํด์ฃผ๋๋ก ํ๋ค.
๋ง์ง๋ง์ผ๋ก updateQuiz();๋ฅผ ๊ผญ ์ ์ด ํจ์๋ฅผ ์คํ์ํค๋ ๊ฒ์ ์์ง ์๋๋ก ํ๋ค.
// ์ ๋ต ํ์ธ
function answerQuiz() {
// ์ฌ์ฉ์๊ฐ ์ ํํ ์ ๋ต == ๋ฌธ์ ์ ๋ต (์ผ์น ์ฌ๋ถ ๊ฒ์ฌ)
// ์ฌ์ฉ์๊ฐ ํด๋ฆญํ input --> checked
for(let i = 0; i < quizSelect.length; i++) {
if(quizSelect[i].checked == true) { // ๋ณด๊ธฐ์ ์ฒดํฌ๊ฐ ๋ ์ํ์ธ๊ฐ ํ์ธ
// ์ฒดํฌ๋ ๋ฒํธ์ ๋ฌธ์ ์ ๋ต ๋ฒํธ์ ์ผ์นํ๋๊ฐ
if(quizSelect[i].value == quizInfo[0].answerResult) {
// alert("์ ๋ต"); // alert ํ
์คํธ ๋ง์น ํ ์ฃผ์์ฒ๋ฆฌ
quizView.classList.add("like"); // ๊ฐ์์ง ๋ฏธ์
} else {
// alert("์ค๋ต");
quizView.classList.add("dislike"); // ๊ฐ์์ง ์ฌํ
quizResult.style.display = "block"; // ์ ๋ต(ํด์ค) ํ์
quizConfirm.style.display = "none"; // ์ ๋ต ํ์ธ ๋ฒํผ ์จ๊น
}
} else {
// alert("์ ๋ต์ ์ ํํด์ฃผ์ธ์."); // 4๋ฒ ๋ฐ๋ณต๋๋ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฏ๋ก ์ฐ์ง ์์
}
}
}
// ์ ๋ต ํด๋ฆญ ์ ์ด๋ฒคํธ ์ถ๋ ฅ
quizConfirm.addEventListener("click", answerQuiz);
์ ๋ต ํ์ธ์ answerQuiz()๋ผ๋ ํจ์ ์์ ๋ฃ๋๋ก ํ๋ค.
๋จผ์ for๋ฌธ์ ํตํด ์ฌ์ฉ์๊ฐ ์ ํํ ์ ๋ต๊ณผ ๋ฌธ์ ์ ๋ต์ ์ผ์น ์ฌ๋ถ๋ฅผ 4๋ฒ ๊ฒ์ฌํด์ผ ํ๋ค.
๊ทธ๋ฐ ๋ค์, if๋ฌธ์ ํตํด ๋ณด๊ธฐ์ ์ฒดํฌ๊ฐ ๋ ์ํ์ธ์ง๋ฅผ ํ์ธํ๋ ์์
์ ํ๊ณ ,
๊ทธ ๋ค์์๋ ์ค์ฒฉ if๋ฌธ์ผ๋ก ๊ทธ ์ฒดํฌ๋ ๋ฒํธ์ ๋ฌธ์ ์ ๋ต ๋ฒํธ๊ฐ ์ผ์นํ๋ ์ง๋ฅผ ํ์ธํ๋๋ก ํ๋ค.
๊ทธ ๋ค์ ์ ๋ต์ผ ๊ฒฝ์ฐ์ ๋ฐ์๊ณผ, ์ค๋ต์ผ ๊ฒฝ์ฐ์ ๋ฐ์์ ์ค์ ํด์ฃผ๋๋ก ํ๋ค.
๋ง์ง๋ง์ผ๋ก๋ ์ ๋ต ํ์ธ ๋ฒํผ ํด๋ฆญ ์ ํด๋น ํจ์๋ฅผ ์คํ์์ผ์ฃผ๋ ์คํ๋ฌธ์ ์ ๋ ๊ฒ์ ์์ง ๋ง์.
๋๊ธ