SoShin_
์†Œ์‹ 
SoShin_
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Study
      • HTML | CSS
      • JavaScript
      • Django
      • Python
      • Flask
      • Git
      • Project
      • ์ด๊ฒƒ์ €๊ฒƒ
      • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      • NestJS
    • Review
      • Book
      • Movie & Drama

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
  • node.js
  • js
  • ์žฅ๊ณ  ์ œ๋„ค๋ฆญ๋ทฐ
  • ์œ„๋„๊ฒฝ๋„
  • Django
  • ์˜ํ™”์ถ”์ฒœ
  • openpyxl
  • Django allauth
  • SQLAlchemy
  • ๋ฌธ์ œํ’€์ด
  • db
  • flask orm
  • MongoDB
  • ์žฅ๊ณ  allauth
  • JavaScript
  • allauth
  • ์˜ํ™”๋ฆฌ๋ทฐ
  • KakaoAPI
  • Python
  • ํŒŒ์ด์ฌ
  • orm
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ์žฅ๊ณ  ์œ ์ €๊ธฐ๋Šฅ
  • SQLite
  • ์žฅ๊ณ 
  • ํ”Œ๋ผ์Šคํฌ
  • Django ์œ ํšจ์„ฑ ๊ฒ€์ฆ
  • FLASK
  • ์œ ์ €๊ธฐ๋Šฅ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
SoShin_

์†Œ์‹ 

Study/JavaScript

[ JS ] DOM์— ๋Œ€ํ•œ ์ด ์ •๋ฆฌ!

2022. 2. 8. 22:08
๋ฐ˜์‘ํ˜•

๐Ÿ“™Window ๊ฐ์ฒด

window ๊ฐ์ฒด๋Š” ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์„ ๋Œ€๋ณ€ํ•˜๋ฉด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ตœ์ƒ๋‹จ์— ์กด์žฌํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์–ด๋А ๊ณณ์—์„œ๋‚˜ ํ•ญ์ƒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ ๊ฐ์ฒด [ Global Object] ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
์–ด๋–ค ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๊ฒฐ๊ตญ ์ „์—ญ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๊ฒƒ ์ด๊ธฐ ๋•Œ๋ฌธ์— window.์„ ์ƒ๋žตํ•˜๊ณ  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

๐Ÿคท‍โ™‚๏ธDOM ์ด๋ž€?

DOM ์€ Document Object Model ์˜ ์•ฝ์ž๋กœ์„œ '๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ' ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
์›น ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚˜๋Š” HTML ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์ด๋•Œ, ๊ฐ ๊ฐ์ฒด๋ฅผ ๋…ธํŠธ [ Node ] ๋ผ๋Š” ์šฉ์–ด๋กœ ํ‘œํ˜„ํ•˜๊ณ , ํƒœ๊ทธ๋Š” ์š”์†Œ ๋…ธ๋“œ, ๋ฌธ์ž๋Š” ํ…์ŠคํŠธ ๋…ธ๋“œ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

๐Ÿ•๏ธ DOM ํŠธ๋ฆฌ

HTML์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋Š” DOM์—์„œ๋„ ๋ฐ˜์˜๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๋‚˜๋ฌด์— ๋น„์œ ํ•˜์—ฌ DOM Tree ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
๊ฐ ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ๋ถ€๋ชจ, ์ž์‹, ํ˜•์ œ๋ผ๋Š” ์šฉ์–ด๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‰DOM ์ด๋™ ์‹œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋กœํผํ‹ฐ

Property ์œ ํ˜• ๊ฒฐ๊ณผ
element.children ์ž์‹ ์š”์†Œ ๋…ธ๋“œ element์˜ ์ž์‹ ์š”์†Œ ๋ชจ์Œ(HTMLCollection)
element.firstElementChild ์ž์‹ ์š”์†Œ ๋…ธ๋“œ element์˜ ์ฒซ ๋ฒˆ์งธ ์ž์‹ ์š”์†Œ ํ•˜๋‚˜
element.lastElementChild ์ž์‹ ์š”์†Œ ๋…ธ๋“œ element์˜ ๋งˆ์ง€๋ง‰ ์ž์‹ ์š”์†Œ ํ•˜๋‚˜
element.parentElement ์ž์‹ ์š”์†Œ ๋…ธ๋“œ element์˜ ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜
element.previousElementSibling ํ˜•์ œ ์š”์†Œ ๋…ธ๋“œ element์˜ ์ด์ „(previous) ํ˜น์€ ์ขŒ์ธก(left)์— ์žˆ๋Š” ์š”์†Œ ํ•˜๋‚˜
element.nextElementSibling ํ˜•์ œ ์š”์†Œ ๋…ธ๋“œ element์˜ ๋‹ค์Œ(next) ํ˜น์€ ์šฐ์ธก(right)์— ์žˆ๋Š” ์š”์†Œ ํ•˜๋‚˜
node.childNodes ์ž์‹ ๋…ธ๋“œ node์˜ ์ž์‹ ๋…ธ๋“œ ๋ชจ์Œ(NodeList)
node.firstChild ์ž์‹ ๋…ธ๋“œ node์˜ ์ฒซ ๋ฒˆ์งธ ์ž์‹ ๋…ธ๋“œ ํ•˜๋‚˜
node.lastChild ์ž์‹ ๋…ธ๋“œ node์˜ ๋งˆ์ง€๋ง‰ ์ž์‹ ๋…ธ๋“œ ํ•˜๋‚˜
node.parentNode ๋ถ€๋ชจ ๋…ธ๋“œ node์˜ ๋ถ€๋ชจ ์š”์†Œ ํ•˜๋‚˜
node.previousSibling ํ˜•์ œ ๋…ธ๋“œ node์˜ ์ด์ „(previous) ํ˜น์€ ์ขŒ์ธก(left)์— ์žˆ๋Š” ๋…ธ๋“œ ํ•˜๋‚˜
node.nextSibling ํ˜•์ œ ๋…ธ๋“œ node์˜ ๋‹ค์Œ(next) ํ˜น์€ ์šฐ์ธก(right)์— ์žˆ๋Š” ๋…ธ๋“œ ํ•˜๋‚˜

๐Ÿ‘€ ์ฃผ์š” ์š”์†Œ ๋…ธ๋“œ ํ”„๋กœํผํ‹ฐ

Property ๋‚ด์šฉ ์ฐธ๊ณ ์‚ฌํ•ญ
element.innerHTML ์š”์†Œ ๋…ธ๋“œ ๋‚ด๋ถ€์˜ HTML์ฝ”๋“œ ๋ฌธ์ž์—ด๋กœ ๋ฆฌํ„ด ์š”์†Œ ์•ˆ์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ,๋‚ด๋ถ€์˜ HTML ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์ข€ ๋” ์ž์ฃผ ํ™œ์šฉ
element.outerHTML ์š”์†Œ ๋…ธ๋“œ ์ž์ฒด์˜ ์ „์ฒด์ ์ธ HTML ์ฝ”๋“œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฆฌํ„ด outerHTML์€ ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ์š”์†Œ ์ž์ฒด๊ฐ€ ๊ต์ฒด๋˜์–ด ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜
element.textContent ์š”์†Œ ๋…ธ๋“œ ๋‚ด๋ถ€์˜ ๋‚ด์šฉ๋“ค ์ค‘์—์„œ HTML์„ ์ œ์™ธํ•˜๊ณ  ํ…์ŠคํŠธ๋งŒ ๋ฆฌํ„ด textContent๋Š” ๋ง๊ทธ๋Œ€๋กœ ํ…์ŠคํŠธ๋งŒ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— HTMLํƒœ๊ทธ๋ฅผ ์“ฐ๋”๋ผ๋„ ๋ชจ๋‘ ํ…์ŠคํŠธ๋กœ ์ฒ˜๋ฆฌ๋จ

์š”์†Œ ๋…ธ๋“œ ๋‹ค๋ฃจ๊ธฐ

  1. ์š”์†Œ ๋…ธ๋“œ ๋งŒ๋“ค๊ธฐ : document.createElement('ํƒœ๊ทธ์ด๋ฆ„')
  2. ์š”์†Œ ๋…ธ๋“œ ๊พธ๋ฏธ๊ธฐ : element.textContent, element.innerHTML, element.innerText
  3. ์š”์†Œ ๋…ธ๋“œ ์ถ”๊ฐ€ ํ˜น์€ ์ด๋™ํ•˜๊ธฐ : element.prepend, element.append, element.after, element.before
  4. ์š”์†Œ ๋…ธ๋“œ ์‚ญ์ œํ•˜๊ธฐ : element.remove()

HTML ์†์„ฑ ๋‹ค๋ฃจ๊ธฐ

๋Œ€๋ถ€๋ถ„์˜ HTML ์†์„ฑ์€ DOM ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ํ‘œ์ค€ ์†์„ฑ์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” ํ”„๋กœํผํ‹ฐ๋กœ ๋ณ€ํ™˜์ด ์•ˆ๋œ๋‹ค.
์ด๋•Œ ์•„๋ž˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํ‘œ์ค€์ด ์•„๋‹Œ HTML ์†์„ฑ๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค!

  1. ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ : element.getAttribute('์†์„ฑ')
  2. ์†์„ฑ ์ถ”๊ฐ€(์ˆ˜์ •) ํ•˜๊ธฐ : element.setAttribute('์†์„ฑ', '๊ฐ’')
  3. ์†์„ฑ ์ œ๊ฑฐํ•˜๊ธฐ : element.removeAttribute('์†์„ฑ')

์Šคํƒ€์ผ ๋‹ค๋ฃจ๊ธฐ

  1. style ํ”„๋กœํผํ‹ฐ ํ™œ์šฉํ•˜๊ธฐ : element.style.styleName = 'value';
  2. class ๋ณ€๊ฒฝ์„ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ : element.className, element.classList
๋ฉ”์†Œ๋“œ ๋‚ด์šฉ ์ฐธ๊ณ ์‚ฌํ•ญ
classList.add ํด๋ž˜์Šค ์ถ”๊ฐ€ํ•˜๊ธฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
classList.remove ํด๋ž˜์Šค ์‚ญ์ œํ•˜๊ธฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ์‚ญ์ œ ๊ฐ€๋Šฅ
classList.toggle ํด๋ž˜์Šค ์—†์œผ๋ฉด ์ถ”๊ฐ€, ์žˆ์œผ๋ฉด ์‚ญ์ œํ•˜๊ธฐ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ ๊ธฐ๋Šฅ์„ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Œ

ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด๋Š”?

JavaScript ์—์„œ Method ๋Š” ํ•จ์ˆ˜๋กœ ๋œ Property ์ด๋‹ค.
๋ผ๊ณ  ํ•˜์ง€๋งŒ ์ € ๊ธ€๋งŒ ๋ณด๊ณ ์„œ๋Š” ํ™•์‹คํ•˜๊ฒŒ ์–ด๋–ค๊ฑธ Property๋ผ ํ•˜๋Š”์ง€, Method๋ผ ํ•˜๋Š”์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ค์›Œ์„œ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค!
๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์˜๋ฏธ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ
  2. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ

์˜๋ฏธ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋Š” Property๊ฐ€ ์†์„ฑ ์ด๋ผ๋ฉด, Method๋Š” ํ–‰๋™ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
์ฆ‰ listA๋ผ๋Š” array๊ฐ€ ์žˆ์„ ๋•Œ, listA.length๋Š” property์ด๊ณ , listA.push(1)์€ Method์ธ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋Š” Method๋Š” ํ•จ์ˆ˜๋กœ ๋œ Property๋ผ ํ•˜์˜€์œผ๋ฏ€๋กœ, ํ•จ์ˆ˜์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ธ callable (ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š”)์„ ์‚ฌ์šฉํ•˜์—ฌ JavaScript์—์„œ ๊ด„ํ˜ธ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ๊ด„ํ˜ธ๋กœ ๋๋‚˜๋ฉด Method, ๊ด„ํ˜ธ๊ฐ€ ์—†์œผ๋ฉด Property๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

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

[ Node.js ] readFile, readFileSync ํ•จ์ˆ˜ ์•Œ์•„๋ณด๊ธฐ  (0) 2022.02.20
[ JS ] Event ์ •๋ฆฌ  (0) 2022.02.08
[ JS ] JS์˜ TDZ๋ž€ ๋ฌด์—‡์ผ๊นŒ?  (0) 2022.02.08
[ JS ] ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ์ต๋ช… ํ•จ์ˆ˜์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!  (0) 2022.02.08
[JS] value, textContent, innerHTML, innerText ๋Š” ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ?  (0) 2022.02.08
    'Study/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ Node.js ] readFile, readFileSync ํ•จ์ˆ˜ ์•Œ์•„๋ณด๊ธฐ
    • [ JS ] Event ์ •๋ฆฌ
    • [ JS ] JS์˜ TDZ๋ž€ ๋ฌด์—‡์ผ๊นŒ?
    • [ JS ] ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ์ต๋ช… ํ•จ์ˆ˜์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!
    SoShin_
    SoShin_
    ์ง์ ‘ ์“ฐ๋Š” ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”