230315 - DOM

๋ฐฑ์Šน์—ฐยท2023๋…„ 3์›” 15์ผ
1

๐Ÿšฉ DOM (Document Object Model)

DOM

๐Ÿ“ ์„ค๋ช…

  • DOM์€ ๋ฌธ์„œ์˜ ๊ตฌ์กฐํ™”๋œ ํ‘œํ˜„(structured representation)์„ ์ œ๊ณตํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ DOM ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์—ฌ ๊ทธ๋“ค์ด ๋ฌธ์„œ ๊ตฌ์กฐ, ์Šคํƒ€์ผ, ๋‚ด์šฉ ๋“ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š”๋‹ค. (MDN ์„ค๋ช…)

๋ฉ”์†Œ๋“œ

-getElementById() : ํ•ด๋‹น ์•„์ด๋””๊ฐ€ ์žˆ๋Š” ์š”์†Œ์— ์ ‘๊ทผ/๋ฐ˜ํ™˜
-getElementsByClassName() : ์ง€์ •ํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ๋ชจ๋‘ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜. 1๊ฐœ๋งŒ ์žˆ์–ด๋„ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•จ.
-querySelector() : ์•„์ด๋””, ์„ ํƒ์ž, ํด๋ž˜์Šค๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์™€ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ž˜์Šค์— ์‚ฌ์šฉ ์‹œ ํ•ด๋‹น ์ด๋ฆ„์˜ ๋งจ ์ฒซ ๋ฒˆ์งธ ํด๋ž˜์Šค๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์—˜๋ฆฌ๋จผํŠธ ์†์„ฑ

-Element.className : ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ์˜ ํด๋ž˜์Šค ์†์„ฑ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์กด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค.
-.classList : remove()์™€ add()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด์— ์žˆ๋˜ ํด๋ž˜์Šค๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํด๋ž˜์Šค์— ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Element.classList.remove()๋กœ ์‚ญ์ œ ์‹œ value๋Š” ์‚ฌ๋ผ์ง€๊ณ  ํ‚ค ๊ฐ’๋งŒ ๋‚จ์Œ { key: value }
    -querySelector() :


โœ’๏ธ ์‚ฌ์šฉ๋ฒ•

์ž…๋ ฅ

css

* { margin: 0; padding: 0; }
body { background: #BDCDD6; }
body > div {
  width: 400px;
  margin: 150px auto;
  padding: 2px;
  text-align: center;
  border: 1px solid #DF7857;
}
h1 { margin: 10px 0; }
h1 img { width: 150px; }
h2 { color:#737db6; margin-bottom: 30px; }
li {
  list-style: none;
  background: #6096B4;
  color: #fff;
  line-height: 50px;
  margin: 2px;
  padding-left: 20px;
}
.red { background: #E7AB9A; }
.orange { background: #f3be70; }
.sky { background: #93BFCF; }

html

<div id="page">
  <h1><img src="./img/kiwi_icon.png" alt="" /></h1>
  <h2>๋‘ ๋ฒˆ์งธ ์ œ๋ชฉ</h2>
  <ul>
    <li id="one">ํˆฌ์นธ</li>
    <li id="two">์˜ค๋ฆฌ</li>
    <li>๋ณ‘์•„๋ฆฌ</li>
    <li class="red">๋‹ญ</li>
    <li class="red">ํ‚ค์œ„์ƒˆ</li>
    <li class="red">์•ต๋ฌด์ƒˆ</li>
    <li class="red">์•ต๋ฌด์ƒˆ2</li>
    <li class="red">์•ต๋ฌด์ƒˆ3</li>
  </ul>
</div>

js

const elPage = document.getElementById("page");
elPage.style.backgroundColor = "#9EA1D4";

document.getElementById("one").className = "sky"; // id="one"์ด ์žˆ๋Š” ์š”์†Œ์— class="sky"๋ฅผ ์ถ”๊ฐ€

two.style.color = "black"; // id๋Š” ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•ด๋„ ๋จ(ํด๋ž˜์Šค๋Š” ์•ˆ๋จโŒ)
// red.style.color = "blue"; // ์˜ค๋ฅ˜

const elRed = document.querySelector(".red");
// querySelector๋Š” ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์ผ๋•Œ ์ฒซ ๋ฒˆ์งธ ํด๋ž˜์Šค๋งŒ ๊ฐ€์ ธ์˜ด
console.log("querySelector() ์‚ฌ์šฉ", elRed);

const elRed2 = document.getElementsByClassName("red"); 
// ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ด. 1๊ฐœ๋งŒ ์žˆ์–ด๋„ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ด
console.log("getElementsByClassName() ์‚ฌ์šฉ", elRed2);

elRed2.className = "orange"; // ์ ์šฉโŒ
elRed2[1].className = "orange"; 
// ๋ฐฐ์—ด index๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ. 
// className : ๊ธฐ์กด์— ์žˆ๋˜ red ํด๋ž˜์Šค๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  orange๊ฐ€ ์ ์šฉ๋จ

elRed2[elRed2.length-1].className = "sky";
// ์ ์šฉ๋œ ํด๋ž˜์Šค ์ค‘ ์ œ์ผ ๋งˆ์ง€๋ง‰ ๊ฒƒ์— ์ ์šฉ

์ถœ๋ ฅ

  • ์ด๋ฏธ์ง€๋กœ ๋Œ€์ฒด

๐Ÿ”— ์ฐธ๊ณ  ๋งํฌ & ๋„์›€์ด ๋˜๋Š” ๋งํฌ






profile
๊ณต๋ถ€ํ•˜๋Š” ๋ฒจ๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€