ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

์ด์ „ ์ƒํ™ฉ

 

์–ด์ œ๋Š” ์—ฌ๋Ÿฌ ํŠน๊ฐ• ์ผ์ •์œผ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฉ๋ฒ•๋งŒ ์ •๋ฆฌํ•ด๋†จ๋˜ ๋‚ด์šฉ์„ ์˜ค๋Š˜ ํ•˜๋‚˜์”ฉ ์‹คํ–‰ํ•ด๋ณด์•˜๋‹ค.

 

๋จผ์ €,

๋ชจ๋‹ฌ์ฐฝ์— ํด๋ฆญํ•œ ์˜ํ™”์˜ ์ •๋ณด๋“ค์„ ๋„์šฐ๊ธฐ ์œ„ํ•ด์„œ ์นด๋“œ์˜ id๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ–ˆ๋‹ค.

ํŠœํ„ฐ๋‹˜์˜ ๋„์›€์œผ๋กœ closest()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์นด๋“œ ์–ด๋А ๊ณณ์„ ๋ˆ„๋ฅด๋˜ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ์—ฎ์–ด์ฃผ์—ˆ๋‹ค.

 

 

๋ฌธ์ œ ์ƒํ™ฉ

์ด์ œ ํด๋ฆญํ•œ ์นด๋“œ ์ฆ‰, e.target์˜ id๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ–ˆ๋‹ค.

for๋ฌธ์œผ๋กœ ์ฐ์–ด๋‚ผ ์นด๋“œ์˜ ํ˜•์‹์„ ์‚ดํŽด๋ณด์•˜๋‹ค.

for (let i = 0; i < posts.length; i++) {
    temp_html += `
    <div data-id="${posts[i].id}" class="mvCard">
         <img id="poster" src="${
           baseImgUrl + posts[i].poster_path
         } class="card-img-top alt="poster">
         <p>${posts[i].title}</p>
         <p>ํ‰์ : ${posts[i].vote_average}<span id="mvaver"></span></p>
    </div>`;
  }

์—ฌ๊ธฐ์„œ data-id๊ฐ€ ํ•„์š”ํ•˜๋‹ค!

 

JavaScript์˜ ์š”์†Œ์—์„œ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ getAttribute() ํ•จ์ˆ˜๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

๐Ÿ“getAttribute ๋ž€?

 

DOM ์š”์†Œ์—์„œ ์†์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์ฃผ์–ด์ง„ ์š”์†Œ์—์„œ ์†์„ฑ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ, ๊ทธ ์†์„ฑ์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

์˜ˆ์‹œ)

[HTML]

<video src="video.mp4" autoplay></video>

 

[JavaScript]

const myVideo = document.querySelector("video");

/* ์†์„ฑ์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ */
console.log(myVideo.getAttribute("src")); // "video.mp4"

/* ์†์„ฑ์˜ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋นˆ ๋ฌธ์ž์—ด("")์„ ๋ฐ˜ํ™˜ */
console.log(myVideo.getAttribute("autoplay")); // ""

/* ํ•ด๋‹น ์š”์†Œ์— ์ผ์น˜ํ•˜๋Š” ์†์„ฑ์ด ์—†๋‹ค๋ฉด null์„ ๋ฐ˜ํ™˜ */
console.log(myVideo.getAttribute("loop")); // null

์ถœ์ฒ˜: getAttribute ํ•จ์ˆ˜

 


๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ cardID๋ฅผ ์„ ์–ธํ•˜์—ฌ 

const cardID = e.target.getAttribute("data-id");
console.log(cardID);

๋ฅผ ์‹คํ–‰ํ•˜์˜€์ง€๋งŒ ์ฝ˜์†” ์ฐฝ์—๋Š” 'null'์ด ๋–ด๋‹ค. ์™œ์ง€?

 

939243 ์ด ๋– ์•ผ ํ•˜๋Š”๋ฐ.....

 

 

"data-id" ๋Œ€์‹  ๋‹ค๋ฅธ ์š”์†Œ๋“ค์„ ๋„ฃ์–ด๋ดค๋‹ค.

"id"๋ฅผ ๋„ฃ์–ด๋ณด๋‹ˆ poster๊ฐ€ ๋–ด๋‹ค. ์ด๋Š” img ํƒœ๊ทธ์— ์žˆ๋Š” id ๊ฐ’์„ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋‹ค.

 

 

๊ทธ๋ ‡๋‹ค๋ฉด, data-id๋ฅผ img ํƒœ๊ทธ์— ๋„ฃ์–ด๋ณผ๊นŒ?

data-id ๊ฐ€ ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ, ์™œ divํƒœ๊ทธ์—์„œ๋Š” ์•ˆ ๋œจ๋˜ ๊ฒƒ์ด img ํƒœ๊ทธ์—์„œ๋Š” ์ž˜ ๋œจ๋Š” ๊ฒƒ์ผ๊นŒ??

 

 

๋ฌธ์ œ ํ•ด๊ฒฐ

cardSection.addEventListener("click", function (e) {
console.log(e.target.closest(".mvCard"));

์ด ๋กœ์ง์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž.

 

 

๐Ÿ“closest ๋ฉ”์„œ๋“œ๋ž€?

 

์ฃผ์–ด์ง„ CSS ์„ ํƒ์ž์™€ ์ผ์น˜ํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€

์ž๊ธฐ ์ž์‹ ์„ ํฌํ•จํ•ด ์œ„์ชฝ(๋ถ€๋ชจ ๋ฐฉํ–ฅ, ๋ฌธ์„œ ๋ฃจํŠธ๊นŒ์ง€)์œผ๋กœ ๋ฌธ์„œ ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•œ๋‹ค.

์ถœ์ฒ˜:closest ๋ฉ”์„œ๋“œ

 

 

์˜ˆ๋ฅผ ๋“ค์–ด

๋‚ด๊ฐ€ ๋งŒ๋“  for๋ฌธ ๋‚ด์˜ temp ์นด๋“œ ๋กœ์ง์„ ๋ณด๋ฉด

 temp_html += `
    <div data-id="${posts[i].id}" class="mvCard">
         <img id="poster" src="${
           baseImgUrl + posts[i].poster_path
         } class="card-img-top alt="poster">
         <p>${posts[i].title}</p>
         <p>ํ‰์ : ${posts[i].vote_average}<span id="mvaver"></span></p>
    </div>`;

 

<img> ๋ฅผ ํด๋ฆญํ•˜๋˜, <p>๋ฅผ ํด๋ฆญํ•˜๋˜ ๋ชจ๋‘ <div>๋กœ ์ธ์‹ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์™œ๋ƒํ•˜๋ฉด <div>์— class๋ฅผ ์ฃผ์—ˆ๊ณ , ์ด๋ฅผ CSS์—์„œ ํ™œ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ!

 

๋”ฐ๋ผ์„œ getAttribute๋ฅผ e.target์—์„œ ์‹คํ–‰ํ•  ๊ฒŒ ์•„๋‹ˆ๋ผ mvCard์ด์—ˆ๋‹ค.

cardSection.addEventListener("click", function (e) {
  console.log(e.target.closest(".mvCard"));
  const mvCard = e.target.closest(".mvCard");
  const cardID = mvCard.getAttribute("data-id");
  console.log(cardID);
   });

 

๐Ÿ‘‡๐Ÿปํ†ต์ผ๊ฐ ์žˆ๊ฒŒ ์ •๋ฆฌํ–ˆ๋‹ค.

cardSection.addEventListener("click", function (e) {
  const mvCard = e.target.closest(".mvCard");
  const cardID = mvCard.getAttribute("data-id");
  });

 

 

์ฐธ๊ณ :

https://developer.mozilla.org/ko/docs/Web/API/Element/closest

 

 

 

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2026/03   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ