๊ด€๋ฆฌ ๋ฉ”๋‰ด

gi_dor

03. DOM ๋ณธ๋ฌธ

Language/JavaScript

03. DOM

๊ธฐ๋Œ 2024. 1. 15. 18:40
728x90

๐Ÿ’ŽDOM (Document Object Model)

  • ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ
  • HTML , XML๋“ค์˜ ๋ฌธ์„œ๋ฅผ ์•ก์„ธ์Šค ํ•˜๋Š” ํ‘œ์ค€์„ ์ •์˜
  • DOM์€ w3c ์—์„œ HTML , XML ๋ฌธ์„ค๋ฅผ ๋‹ค๋ฃจ๋Š” ํ‘œ์ค€ (์ธํ„ฐํŽ˜์ด์Šค)์„ ์ •์˜ํ•œ ๊ฒƒ
  • DOM ์— ์ •์˜๋œ ํ‘œ์ค€์— ๋Œ€ํ•œ ๊ตฌํ˜„์€ ๋ธŒ๋ผ์šฐ์ € ์ œ์กฐ์‚ฌ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐœ๋ฐœ์‚ฌ , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ด๋‹น
  • ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฅ˜๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ƒ๊ด€์—†์ด ๋™์ผํ•œ API ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค

DOM ํŠน์ง•

  • ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋Š” ๊ฐ์ฒด๋‹ค.
  • ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.
  • ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์—‘์„ธ์Šคํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.
  • ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

DOM ์ฃผ์š”๊ฐ์ฒด

Document - ์›น๋ธŒ๋ผ์šฐ์ € HTML ๋ฌธ์„œ๋ฅผ ๋กœ๋”ฉ ํ–ˆ์„ ๋•Œ , Document  ๊ฐ์ฒด๊ฐ€ ๋œ๋‹ค
Element - HTML ์˜ ํƒœ๊ทธ๋ฅผ ํ‘œํ˜„ํ•˜ํ•˜๋Š” ๊ฐ์ฒด๋‹ค , Document   ๊ฐ์ฒด์—๋Š” ํ˜„์žฌ ๋กœ๋”ฉ๋œ HTML๋ฌธ์„œ ๋ชจ๋“  ํƒœ๊ทธ์— ๋Œ€ํ•œ Eleme
Attr - HTML ํƒœ๊ทธ์˜ ์†์„ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด
HTMLCollection - Element ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ํฌํ•จํ•  ์ˆ˜์žˆ๋Š” ๋ฐฐ์—ด ์œ ์‚ฌ๊ฐ์ฒด
Event - ์‚ฌ์šฉ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€์™€ ์ƒํ˜ธ ์ž‘์šฉ ํ• ๋•Œ ๋งˆ๋‹ค ์—˜๋ฆฌ๋จผํŠธ์—์„œ ๋ฐœ์ƒ๋˜๋Š” ๊ฐ์ฒด

๋ธŒ๋ผ์šฐ์ € ๋‚ด์žฅ๊ฐ์ฒด ( Brower Object Model , BOM)

์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ ๋ฐ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•œ๋‹ค

  • Window Object
    1. ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋‹ค ( ์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ณ ์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €)
    2. ์ „์—ญ๊ฐ์ฒด๋‹ค → ์›นํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์—์„œ ์ž‘์„ฑํ•˜๋Š” ๋ชจ๋“ ๋ณ€์ˆ˜ , ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” Window Object์— ๋‹ด๊ธด๋‹ค
    3. ๋‹ค๋ฅธ BOM ( Browser Object Model ) ๊ฐ์ฒด๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋‹ค


  • Document Object
    1. HTML ๋ฌธ์„œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋‹ค
    2. Document Object๊ฐ€ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์ด์šฉํ•ด์„œ ์›นํŽ˜์ด์ง€์˜ ํƒœ๊ทธ , ์ปจํ…์ธ ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.


  • Screen Object
    1. ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์˜ ๋””์Šคํ”Œ๋ ˆ์ด ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋‹ค
    2. Screen Object๊ฐ€ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์ด์šฉํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๋””์Šคํ”Œ๋ ˆ์ด ์ค‘์•™์— ์œ„์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.


  • Location Object
    1. ํ˜„์žฌ ํŽ˜์ด์ง€์˜ URL ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด , ์ฃผ์†Œ์ฐฝ์˜ URL ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋‹ค
    2. Location Object๊ฐ€ ์ œ๊ณตํ•˜๋Š” API์ž„์„ ์ด์šฉํ•ด์„œ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.


  • History Object
    1. ์›น ํŽ˜์ด์ง€ ๋ฐฉ๋ฌธ์ด๋ ฅ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด๋‹ค
    2. History Object๊ฐ€ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์ด์šฉํ•ด์„œ ์ด์ „ํŽ˜์ด์ง€ , ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.


  • Navigator Object
    1. ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด
    2. Navigator Object ๊ฐ€ ์ œ๊ณตํ•˜๋Š” API ๋ฅผ ์ด์šฉํ•ด์„œ ์›น ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด๋ฅผ ์กฐํšŒ ํ•  ์ˆ˜ ์žˆ๋‹ค

Element ๊ฐ์ฒด

  • ํ”„๋กœํผํ‹ฐ (๋ฉค๋ฒ„๋ณ€์ˆ˜)
    • tagName ํƒœ๊ทธ๋ช…์ด ์ €์žฅ๋˜์–ด์žˆ๋‹ค
    • nodeType ๋…ธ๋“œ ํƒ€์ž…์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค
    • textContent ํƒœ๊ทธ์˜ ํ…์ŠคํŠธ ์ปจํ…์ธ ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.
    • innerHTML ํƒœ๊ทธ์˜ ๋‚ด๋ถ€ HTML ์ปจํ…์ธ ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค
    • id ํƒœ๊ทธ์˜ id ์†์„ฑ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค
    • style ํƒœ๊ทธ์˜ css ์†์„ฑ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค

<div id="box" class="border bg-light p-3">
    <h3>์—ฐ์Šต</h3>
    <p>์—ฐ์Šต ์ž…๋‹ˆ๋‹ค</p>
</div>
 - tagName = "DIV"
 - nodeType = 1
 - textContent = "์—ฐ์Šต" , "์—ฐ์Šต ์ž…๋‹ˆ๋‹ค"
 - innerHTML = <h3>์—ฐ์Šต</h3>  <p>์—ฐ์Šต ์ž…๋‹ˆ๋‹ค</p>
 - id = box
 - classList = ["border" , "bg-light" , "p3"]
 - style  =  style ๊ฐ์ฒด

์•„์ด๋”” ์†์„ฑ๊ฐ’์ด intro ์ธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค

document.getElementById("intro");

์•„์ด๋”” ์„ ํƒ์ž๋กœ ์•„์ด๋”” ์†์„ฑ๊ฐ’์ด intro ์ธ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค

document.querySelector("#intro");

ํƒœ๊ทธ๋ช…์ด "p" ์ธ ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜

document.getElementsByTagName("p");

ํƒœ๊ทธ ์„ ํƒ์ž๋กœ ํƒœ๊ทธ๋ช…์ด "p"์ธ ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜

document.querySelectorAll("p");

ํด๋ž˜์Šค ์†์„ฑ๊ฐ’์ด "box-text"์ธ ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค

document.getElementsByClassName("box-text");

ํด๋ž˜์Šค ์„ ํƒ์ž๋กœ ํด๋ž˜์Šค ์†์„ฑ๊ฐ’์ด "box-text" ์ธ ๋ชจ๋“  ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜

document.querySelectorAll("box-text");
document.querySelectorAll("#intro > p");
728x90

'Language > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

04. Ajax  (0) 2024.01.17
02. ์ด๋ฒคํŠธ  (1) 2024.01.12
01. JavaScript  (0) 2024.01.12
pre-training JavaScript (9)  (1) 2023.10.20
pre-training JavaScript (8) ํ•จ์ˆ˜ , ๊ฐ์ฒด  (1) 2023.10.19