FrontEnd

HTML DOM(Document Object Model)

KJihun 2025. 3. 18. 09:01
728x90

๐Ÿ”น DOM์ด๋ž€?

DOM (Document Object Model) ์€ ๋ฌธ์„œ(Document) ๋ฅผ ๊ฐ์ฒด(Object) ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ชจ๋ธ(Model) ์ด๋‹ค.

  • ๋ฌธ์„œ ๊ฐ์ฒด: <html>, <body> ๊ฐ™์€ HTML ํƒœ๊ทธ๋ฅผ JavaScript๊ฐ€ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒƒ.
  • ๋ชจ๋ธ: ๋ฌธ์„œ ๊ฐ์ฒด๋ฅผ ํŠธ๋ฆฌ(Tree) ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ์ดํ•ดํ•˜๋Š” ๋ฐฉ์‹.

 

๐Ÿ”น DOM์˜ ์—ญํ• 

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” HTML ๋ฌธ์„œ๋ฅผ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ดํ•ดํ•˜๊ณ , JavaScript๋Š” ์ด๋ฅผ ํ™œ์šฉํ•ด ๊ฒ€์ƒ‰, ์ˆ˜์ •, ์ถ”๊ฐ€, ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ”น Tree ๊ตฌ์กฐ๋ž€?

  1. Root Node: ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋กœ, DOM์—์„œ๋Š” <html>์ด ํ•ด๋‹น๋œ๋‹ค.
  2. Parent & Child: ์ƒ์œ„ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ(Parent), ํ•˜์œ„ ๋…ธ๋“œ๋ฅผ ์ž์‹(Child)์ด๋ผ ํ•œ๋‹ค.
  3. Leaf Node: ๋” ์ด์ƒ ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋ฅผ ๋œปํ•˜๋ฉฐ, DOM์—์„œ๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ ๊ฐ™์€ ์š”์†Œ๊ฐ€ ํ•ด๋‹น๋œ๋‹ค.

 

๐Ÿ”น HTML์ด DOM ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •

  1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ์ฝ๊ณ  ๋ถ„์„(Parsing) ํ•œ๋‹ค.
  2. HTML ์š”์†Œ๋“ค์„ ๊ณ„์ธต์ ์ธ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  3. JavaScript๊ฐ€ ์ด ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โœ… ์˜ˆ์ œ: HTML ์ฝ”๋“œ

<!DOCTYPE html>
<html>
<head>
    <title>DOM Example</title>
</head>
<body>
    <h1 id="title">Hello, DOM!</h1>
</body>
</html>
 
 
 

โœ… DOM ํŠธ๋ฆฌ ๊ตฌ์กฐ

Document
 โ”œโ”€โ”€ <html>
 โ”‚    โ”œโ”€โ”€ <head>
 โ”‚    โ”‚    โ”œโ”€โ”€ <title>DOM Example</title>
 โ”‚    โ”œโ”€โ”€ <body>
 โ”‚         โ”œโ”€โ”€ <h1 id="title">Hello, DOM!</h1>
 
 
 

๐Ÿ”น JavaScript๋กœ DOM ์กฐ์ž‘ํ•˜๊ธฐ

๐Ÿ“Œ ์š”์†Œ ์ฐพ๊ธฐ ๋ฐ ๋ณ€๊ฒฝ

document.getElementById("title").textContent = "Hello, JavaScript!";

๐Ÿ“Œ ์ƒˆ๋กœ์šด ์š”์†Œ ์ถ”๊ฐ€

let newPara = document.createElement("p"); newPara.textContent = "์ƒˆ๋กœ์šด ๋ฌธ๋‹จ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค!"; document.body.appendChild(newPara);