๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Effect/Quiz Effect

[Quiz Effect] ํ€ด์ฆˆ ์ดํŽ™ํŠธ 01 - ์ •๋‹ต ํ™•์ธํ•˜๊ธฐ ์œ ํ˜•

by ์ฝ”๋”ฉ๊ณต์ฑ… 2022. 8. 4.
๋ฐ˜์‘ํ˜•

ํ€ด์ฆˆ ๋งŒ๋“ค๊ธฐ 01

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ทธ ๋™์•ˆ ๋ฐฐ์› ๋˜ JavaScript๋ฅผ ์ด์šฉํ•˜์—ฌ ํ€ด์ฆˆ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ํ•™์Šต ๋‚ด์šฉ์„ ์ž˜ ํ™œ์šฉํ•˜์—ฌ ์›น๋””์ž์ธ๊ธฐ๋Šฅ์‚ฌ ์‹œํ—˜ ๊ณต๋ถ€ ์—ด์‹ฌํžˆ ํ•ด ๋ด…์‹œ๋‹ค!
๋ณ€์ˆ˜(let)์™€ ์ƒ์ˆ˜(const)์— ์ฟผ๋ฆฌ ์…€๋ ‰ํ„ฐ ๊ฐ’์„ ์ €์žฅ์‹œํ‚ค๊ณ , ๊ทธ ๋™์•ˆ ๋ฐฐ์šด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ ์ •๋ณด๋ฅผ HTML ํƒœ๊ทธ์— ์ถœ๋ ฅ์‹œํ‚ค๊ณ , ์ •๋‹ต์„ ์ˆจ๊ฒผ๋‹ค๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํšจ๊ณผ๋“ค์„ ๊ตฌํ˜„์‹œ์ผœ๋ด…์‹œ๋‹ค!


์ •๋‹ต ํ™•์ธํ•˜๊ธฐ ์œ ํ˜•

์ฒซ๋ฒˆ์งธ ์ •๋‹ต ํ™•์ธํ•˜๊ธฐ ์œ ํ˜•์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค์™€ ๋ถ€์—ฐ ์„ค๋ช…(์ฃผ์„ ์ฒ˜๋ฆฌ๋จ)์ด๋‹ค.
HTML๊ณผ CSS ์†Œ์Šค๋ฅผ ํ•จ๊ป˜ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ๋งจ ์•„๋ž˜์˜ '์›๋ณธ ์†Œ์Šค ๋ณด๊ธฐ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒƒ.

// ์„ ํƒ์ž : ์ƒ์ˆ˜ const๋ฅผ ํ•„์š”ํ•œ ๋งŒํผ ์„ ์–ธํ•œ ๋‹ค์Œ HTML ์˜์—ญ์˜ div, ์‹œ๋งจํ‹ฑ ํƒœ๊ทธ ๋“ฑ์˜ Class๋ช…๊ณผ ์—ฐ๊ฒฐ์‹œํ‚จ๋‹ค.
//const ์ ์ ˆํ•œ ์ƒ์ˆ˜ ์ด๋ฆ„ = document.querySelector("Class๋ช…");
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 quizDog = document.querySelector(".quiz__view .dog");             // ๊ฐ•์•„์ง€

// ๋ฌธ์ œ ์ •๋ณด
// HTML ๋ถ€๋ถ„์€ ๋น„์›Œ๋‘๊ณ  ์ด๊ณณ์—๋‹ค๊ฐ€ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค. ์—…๋ฐ์ดํŠธ ์‹œ ์ด๊ณณ์—์„œ ์ˆ˜์ •ํ•  ๊ฒƒ.
const answerType = "์›น๋””์ž์ธ๊ธฐ๋Šฅ์‚ฌ";
const answerNum = "1";
const answerAsk = "์ธ์ ‘ํ•˜๋Š” ๋‘ ์ƒ‰์˜ ๊ฒฝ๊ณ„ ๋ถ€๋ถ„์— ์ƒ‰์ƒ, ๋ช…๋„, ์ฑ„๋„์˜ ๋Œ€๋น„๊ฐ€ ๋”์šฑ ๊ฐ•ํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ํ˜„์ƒ์„ ๋ฌด์—‡์ด๋ผ๊ณ  ํ•˜๋Š”๊ฐ€?";
const answerResult = "์—ฐ๋ณ€๋Œ€๋น„";

// ๋ฌธ์ œ ์ถœ๋ ฅ
// ์œ„์˜ '๋ฌธ์ œ ์ •๋ณด'์—์„œ ์ƒ์ˆ˜์— ์ €์žฅํ•ด๋‘์—ˆ๋˜ ๊ฐ’์„ ์ถœ๋ ฅ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ž„
// TMI) innerText ๋Œ€์‹  textContent๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ต์Šคํ”Œ๋กœ์–ด๊นŒ์ง€ ํ˜ธํ™˜ ๊ฐ€๋Šฅ.
quizType.innerText = answerType;
quizNumber.innerText = "0" + answerNum + ". ";
quizAsk.innerText = answerAsk;
quizResult.innerText = answerResult;

// ์ •๋‹ต ์ˆจ๊ธฐ๊ธฐ
// '์ •๋‹ต ํ™•์ธ' ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ธฐ ์ „๊นŒ์ง€๋Š” ์ •๋‹ต์„ ์ˆจ๊ฒจ์•ผ ํ•จ
quizResult.style.display = "none";

// ์ •๋‹ต ํ™•์ธ
quizConfirm.addEventListener("click", function(){
    quizConfirm.style.display = "none";     // ์ •๋‹ต ๋ฒ„ํŠผ ํด๋ฆญํ•˜๋ฉด ํ™•์ธ ๋ฒ„ํŠผ ์•ˆ๋ณด์ด๊ฒŒ ํ•จ
    quizResult.style.display = "block";     // ์ˆจ๊ฒจ์ง„ ์ •๋‹ต์„ ๋ณด์ด๊ฒŒ ํ•จ
    quizDog.classList.add("like");          // ์ •๋‹ต์„ ํ™•์ธํ•˜๋ฉด ๊ฐ•์•„์ง€๊ฐ€ ์›ƒ๊ณ  ์žˆ์–ด์•ผ ํ•จ --> class์— "like" ์ถ”๊ฐ€
});
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


Reference Book

JavaScript
HTML
CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.