|DOM ์กฐ์ - ๊ฐ๋
- Document๋ ๋ฌธ์ ํ์ฅ(HTML)์ ํด๋นํ๊ณ ์ด๋ฅผ ์กฐ์
- DOM ์กฐ์ ์์
- ์ ํ(Select)
- ๋ณ๊ฒฝ(Mainpulation)
|DOM ๊ด๋ จ ๊ฐ์ฒด์ ์์ ๊ตฌ์กฐ

- Event Target
- Event Listner๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฐ์ฒด๊ฐ ๊ตฌํํ๋ DOM ์ธํฐํ์ด์ค
- Node
- ์ฌ๋ฌ ๊ฐ์ง DOM ํ์ ๋ค์ด ์์ํ๋ ์ธํฐํ์ด์ค

- Element
- Document ์์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์์ํ๋ ๊ฐ์ฅ ๋ฒ์ฉ์ ์ธ ์ธํฐํ์ด์ค
- ๋ถ๋ชจ์ธ Node์ ๊ทธ ๋ถ๋ชจ์ธ EventTarget์ ์์ฑ์ ์์
- Document
- ๋ธ๋ผ์ฐ์ ๊ฐ ๋ถ๋ฌ์จ ์น ํ์ด์ง๋ฅผ ๋ํ๋
- DOM ํธ๋ฆฌ์ ์ง์ ์ (entry point) ์ญํ ์ ์ํ
- HTMLElement
- ๋ชจ๋ ์ข ๋ฅ์ HTML ์์
- ๋ถ๋ชจ element์ ์์ฑ ์์
|DOM ์ ํ โ ์ ํ ๊ด๋ จ ๋ฉ์๋
- document.querySelector(selector)
- ์ ๊ณตํ ์ ํ์์ ์ผ์นํ๋ element ํ๋ ์ ํ
- ์ ๊ณตํ CSS selector๋ฅผ ๋ง์กฑํ๋ ์ฒซ ๋ฒ์งธ element ๊ฐ์ฒด๋ฅผ ๋ฐํ (์๋ค๋ฉด null)
- document.querySelectorAll(selector)
- ์ ๊ณตํ ์ ํ์์ ์ผ์นํ๋ ์ฌ๋ฌ element๋ฅผ ์ ํ
- ๋งค์นญ ํ ํ๋ ์ด์์ ์ ๋ ํฐ๋ฅผ ํฌํจํ๋ ์ ํจํ CSS selector๋ฅผ ์ธ์(๋ฌธ์์ด)๋ก ๋ฐ์
- ์ง์ ๋ ์ ๋ ํฐ์ ์ผ์นํ๋ NodeList๋ฅผ ๋ฐํ
โข querySelector(), querySelectorAll()์ ์ฌ์ฉํ๋ ์ด์ โข id, class ๊ทธ๋ฆฌ๊ณ tag ์ ํ์ ๋ฑ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก, ๋ ๊ตฌ์ฒด์ ์ด๊ณ ์ ์ฐํ๊ฒ ์ ํ ๊ฐ๋ฅ ex) document.querySelector('#idโ), document.querySelectAll(โ.class')
|DOM ์ ํ - ์ ํ ๋ฉ์๋๋ณ ๋ฐํ ํ์
- ๋จ์ผ element
โข getElementById()โข querySelector() - HTMLCollection
โข getElementsByTagName() โข getElementsByClassName() - NodeList โข querySelectorAll()
|DOM ์ ํ - HTMLCollection & NodeList
- ๋ ๋ค ๋ฐฐ์ด๊ณผ ๊ฐ์ด ๊ฐ ํญ๋ชฉ์ ์ ๊ทผํ๊ธฐ ์ํ index๋ฅผ ์ ๊ณต (์ ์ฌ ๋ฐฐ์ด)
- HTMLCollection
- name, id, index ์์ฑ์ผ๋ก ๊ฐ ํญ๋ชฉ์ ์ ๊ทผ ๊ฐ๋ฅ
- NodeList
- index๋ก๋ง ๊ฐ ํญ๋ชฉ์ ์ ๊ทผ ๊ฐ๋ฅ
- ๋จ, HTMLCollection๊ณผ ๋ฌ๋ฆฌ ๋ฐฐ์ด์์ ์ฌ์ฉํ๋ forEach ๋ฉ์๋ ๋ฐ ๋ค์ํ ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ ๋ค Live Collection์ผ๋ก DOM์ ๋ณ๊ฒฝ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ์ง๋ง, querySelectorAll()์ ์ํด ๋ฐํ๋๋ NodeList๋ Static Collection์ผ๋ก ์ค์๊ฐ์ผ๋ก ๋ฐ์๋์ง ์์
|DOM ์ ํ - Collection
- Live Collection
- ๋ฌธ์๊ฐ ๋ฐ๋ ๋ ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ ๋จ
- DOM์ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก collection์ ๋ฐ์
- ex) HTMLCollection, NodeList
- Static Collection (non-live)
- DOM์ด ๋ณ๊ฒฝ๋์ด๋ collection ๋ด์ฉ์๋ ์ํฅ์ ์ฃผ์ง ์์
- querySelectorAll()์ ๋ฐํ NodeList๋ง static collection
|DOM ๋ณ๊ฒฝ - ๋ณ๊ฒฝ ๊ด๋ จ ๋ฉ์๋ (Creation), (append DOM)
- document.createElement()
- ์์ฑํ ํ๊ทธ ๋ช ์ HTML ์์๋ฅผ ์์ฑํ์ฌ ๋ฐํ
- Element.append()
- ํน์ ๋ถ๋ชจ Node์ ์์ NodeList ์ค ๋ง์ง๋ง ์์ ๋ค์์ Node ๊ฐ์ฒด๋ DOMString์ ์ฝ์
- ์ฌ๋ฌ ๊ฐ์ Node ๊ฐ์ฒด, DOMString์ ์ถ๊ฐ ํ ์ ์์
- ๋ฐํ ๊ฐ์ด ์์
- Node.appendChild()
- ํ Node๋ฅผ ํน์ ๋ถ๋ชจ Node์ ์์ NodeList ์ค ๋ง์ง๋ง ์์์ผ๋ก ์ฝ์ (Node๋ง ์ถ๊ฐ ๊ฐ๋ฅ)
- ํ๋ฒ์ ์ค์ง ํ๋์ Node๋ง ์ถ๊ฐํ ์ ์์
- ๋ง์ฝ ์ฃผ์ด์ง Node๊ฐ ์ด๋ฏธ ๋ฌธ์์ ์กด์ฌํ๋ ๋ค๋ฅธ Node๋ฅผ ์ฐธ์กฐํ๋ค๋ฉด ์๋ก์ด ์์น๋ก ์ด๋
|ParentNode.append() vs Node.appendChild()
- append()๋ฅผ ์ฌ์ฉํ๋ฉด DOMString ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ ์๋ ์์ง๋ง, .appendChild()๋ Node ๊ฐ์ฒด๋ง ํ์ฉ
- append()๋ ๋ฐํ ๊ฐ์ด ์์ง๋ง, appendChild()๋ ์ถ๊ฐ๋ Node ๊ฐ์ฒด๋ฅผ ๋ฐํ
- append()๋ ์ฌ๋ฌ Node ๊ฐ์ฒด์ ๋ฌธ์์ด์ ์ถ๊ฐํ ์ ์์ง๋ง, .appendChild()๋ ํ๋์ Node ๊ฐ์ฒด๋ง ์ถ๊ฐํ ์ ์์
|DOM ๋ณ๊ฒฝ โ ๋ณ๊ฒฝ ๊ด๋ จ ์์ฑ (property)
- Node.innerText
- Node ๊ฐ์ฒด์ ๊ทธ ์์์ ํ ์คํธ ์ปจํ ์ธ (DOMString)๋ฅผ ํํ (ํด๋น ์์ ๋ด๋ถ์ raw text) (์ฌ๋์ด ์ฝ์ ์ ์๋ ์์๋ง ๋จ๊น)
- ์ฆ, ์ค ๋ฐ๊ฟ์ ์ธ์ํ๊ณ ์จ๊ฒจ์ง ๋ด์ฉ์ ๋ฌด์ํ๋ ๋ฑ ์ต์ข ์ ์ผ๋ก ์คํ์ผ๋ง์ด ์ ์ฉ๋ ๋ชจ์ต์ผ๋ก ํํ
- Element.innerHTML
- ์์(element) ๋ด์ ํฌํจ๋ HTML ๋งํฌ์ ์ ๋ฐํ
- [์ฐธ๊ณ ] XSS ๊ณต๊ฒฉ์ ์ทจ์ฝํ๋ฏ๋ก ์ฌ์ฉ ์ ์ฃผ์
|XSS (Cross-site Scripting)
- ๊ณต๊ฒฉ์๊ฐ ์ ๋ ฅ์์๋ฅผ ์ฌ์ฉํ์ฌ(<input>)์น ์ฌ์ดํธ ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋์ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํด ๊ณต๊ฒฉํ๋ ๋ฐฉ๋ฒ
- ํผํด์(์ฌ์ฉ์)์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉฐ ๊ณต๊ฒฉ์๊ฐ ์์ธ์ค ์ ์ด๋ฅผ ์ฐํํ๊ณ ์ฌ์ฉ์๋ฅผ ๊ฐ์ฅ ํ ์ ์๋๋ก ํจ
|DOM ์ญ์ - ์ญ์ ๊ด๋ จ ๋ฉ์๋
- ChildNode.remove()
- Node๊ฐ ์ํ ํธ๋ฆฌ์์ ํด๋น Node๋ฅผ ์ ๊ฑฐ
- Node.removeChild()
- DOM์์ ์์ Node๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐ๋ Node๋ฅผ ๋ฐํ
- Node๋ ์ธ์๋ก ๋ค์ด๊ฐ๋ ์์ Node์ ๋ถ๋ชจ Node
|DOM ์์ฑ โ ์์ฑ ๊ด๋ จ ๋ฉ์๋
- Element.setAttribute(name, value)
- ์ง์ ๋ ์์์ ๊ฐ์ ์ค์
- ์์ฑ์ด ์ด๋ฏธ ์กด์ฌํ๋ฉด ๊ฐ์ ๊ฐฑ์ , ์กด์ฌํ์ง ์์ผ๋ฉด ์ง์ ๋ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ์ ์์ฑ์ ์ถ๊ฐ
- Element.getAttribute(attributeName)
- ํด๋น ์์์ ์ง์ ๋ ๊ฐ(๋ฌธ์์ด)์ ๋ฐํ
- ์ธ์(attributeName)๋ ๊ฐ์ ์ป๊ณ ์ ํ๋ ์์ฑ์ ์ด๋ฆ
<DOM ์กฐ์ Summary>
1. ์ ํํ๋ค.
querySelector() querySelectorAll() ...
2. ๋ณ๊ฒฝ(์กฐ์)ํ๋ค.
innerText innerHTML element.style.color setAttribute() getAttribute() createElement() appendChild() ...
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[FE/JavaScript] ์์ฑ์ ํจ์์ ์ํ ๊ฐ์ฒด ์์ฑ (0) | 2022.06.13 |
---|---|
JavaScript - Event (0) | 2022.05.03 |
JavaScript - Asynchronous JavaScript(์ฝ๋ฐฑํจ์, Async callbacks,Promise), Axios (0) | 2022.05.03 |
JavaScript - AJAX, Asynchronous (๋น๋๊ธฐ) (0) | 2022.05.03 |
JavaScript - ํ๋กํ ํ์ (prototype), ํด๋์ค(class) (0) | 2022.05.03 |
๋๊ธ