ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ถ๋งํฌ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ(1) - ์ด๋ฒคํธ ์์
์ฑ._. 2025. 1. 15. 21:16์ด์ ์ํฉ
์ํ๋ ์ํ๋ฅผ ๋ฐ๋ก ๋ชจ์๋ณผ ์ ์๋ '๋ถ๋งํฌ' ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ ํ๋ค.

์ฐ์ ๋ถ๋งํฌ ๊ธฐ๋ฅ์ ํ๊ณ ์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์๋ค.
function addBookmark() {
const bookmarkBtn = document.querySelector(".book");
bookmarkBtn.addEventListener("click", function () {
alert("๋ถ๋งํฌ");
});
}
๋ฌธ์ ์ํฉ

๊ทธ๋ฌ๊ธฐ ์ํด์๋ ๋ชจ๋ฌ์ฐฝ ๋ด์ ๋ถ๋งํฌ ์ถ๊ฐ ๋ฒํผ์ ์ ๊ทผํด์ผ ํ๋๋ฐ..
console.log๋, alert๋ ์๋ฌด ๋ฐ์ ์์์ ์๋ฌธ์ ์ด ๋ค์๋ค.
โ``์์ ํ๊ทธ์๋ ์ด๋ป๊ฒ ์ ๊ทผํ์ง?
์ด์ ์๋ class๊ฐ close์ธ ๋ซ๊ธฐ์ฐฝ์๋ ์ ์ ๊ทผํ๋๋ฐ
๊ทธ ์ด์ ๋ ๋ชจ๋ฌ์ฐฝ ํจ์ ๋ด์ ๋ซ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ผ ๋ถ๋งํฌ ๊ธฐ๋ฅ๋ ๋ชจ๋ฌ์ฐฝ ํจ์ ๋ด์ ์์ฑํด์ผํ๋..? ๋๋ฌด ๊ธธ์ด์งํ ๋ฐ..
ํ๋ ์๊ฐ์ด ๋ค์๋ค.
์ํด์ '์ด๋ฒคํธ ์์'์ ์ ์ฉํด์ผ ํ๋ค.
์ด๋ฒคํธ ์์์ด๋?
์ฐ์ , ์ด๋ฒคํธ ์์์ด๋ ํ ์์ญ ๋ด์์ ๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์์ ๋ง๋ค ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๋ถ์ด๋ ๊ฒ์ด ์๋๋ผ
๊ทธ ์์ ํ๊ทธ์ class๋ฅผ ์ง์ ํ์ฌ ์ด๋ฒคํธ๋ฅผ ์ง์ ํ๋ ๊ฒ์ด๋ค.
๐์ค์ ์ ์ฉ
์ฌ์ค ๊ทธ ์ ์๋ ์ด๋ฒคํธ ์์์ ์ ์ฉํ๋ค.
๋ฐ๋ก ์ํ ๋ฉ์ธ ํ์ด์ง์ธ๋ฐ,
์ํ ์นด๋ ํ๋ํ๋์ ์ด๋ฒคํธ๋ฅผ ๋ถ์ฌํ ๊ฒ์ด ์๋,
์ํ ์นด๋ ๋ฌถ์(cardSection)์ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๋ถ์๋ค.

์ํ ์นด๋ ๋ฌถ์(cardSection)์ class๋ cards์ด๋ฉฐ
๐๐ปcards์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ถ์ฌํ ์ฝ๋๋ฅผ ์๋์ฒ๋ผ ๊ตฌํํ์๋ค.
const cardSection = document.querySelector(".cards");
cardSection.addEventListener("click", function (e) {
const mvCard = e.target.closest(".mvCard");
// console.log(mvCard);
const cardID = mvCard.getAttribute("data-id");
console.log(cardID);
const clickModal = postArray.find(function (postArray) {
return Number(postArray.id) === Number(cardID);
});
console.log(clickModal);
displayModal(clickModal);
modal.style.display = "block";
document.body.style.overflow = "hidden";
});
๋ฌธ์ ํด๊ฒฐ
์์ ์ ์ฉ์ฒ๋ผ ๋ชจ๋ฌ์ฐฝ ๋ด์ ์๋ ์์๋ค(๋ถ๋งํฌ ๋ฒํผ, ๋ซ๊ธฐ๋ฒํผ)์๊ฒ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ถ์ฌํ์๋ค.
๐์ฝ๋ ๊ตฌํ
modal.addEventListener("click", function (e) {
e.target.classList.contains("close")
? ((modal.style.display = "none"),
(document.body.style.overflow = "scroll"))
: null;
e.target.classList.contains("book") ? alert("๋ถ๋งํฌ ์ถ๊ฐ") : null;
console.log(e.target);
});
๐์ฝ๋ ํด์
์ผํญ์ฐ์ฐ์๋ฅผ ํตํด ๊ธฐ๋ฅ์ ๊ตฌํํ์๋ค.
๊ฐ๋จํ ์ค๋ช ํ์๋ฉด,
์กฐ๊ฑด ? A : B
=> ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ A๋ฅผ, ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ B๋ฅผ ์คํํ๊ธฐ
์กฐ๊ฑด์ ํด๋นํ๋ ๋ถ๋ถ :
e.target.classList.contains("close")
'e.target' : ๋ด๊ฐ "click"ํ ์์์ ์ ๊ทผํ๊ธฐ
classList : ์์์ class๋ช ๋ค
contains("") : ""์ ํฌํจํ๋ ๊ฒ
=> ๋ด๊ฐ ํด๋ฆญํ ์์์ class๋ช ์ค, "close"๋ฅผ ๊ฐ๊ณ ์๋ ๊ฒ
A์ ํด๋นํ๋ ๋ถ๋ถ:
((modal.style.display = "none"), (document.body.style.overflow = "scroll"))
๋ชจ๋ฌ์ฐฝ ๋ซ๊ธฐ, ๋ฉ์ธ ํ๋ฉด ์คํฌ๋กค ๋๊ธฐ
B์ ํด๋นํ๋ ๋ถ๋ถ: null
-
๊ทธ ์๋ ๋ถ๋ถ(๋ถ๋งํฌ ๋ฒํผ)๋ ๋์ผํ๊ฒ ๊ตฌํํ๋ค.
e.target.classList.contains("book") ? alert("๋ถ๋งํฌ ์ถ๊ฐ") : null;

๋ฒํผ์ ๋๋ฅด๋ aleart์ฐฝ์ด ์ ๋ฌ๋ค.