์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- React
- ์๋งจํฑ์์
- ๊ณ ์ฐจํจ์
- prototype
- wai-aria
- fetch api
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- Effect Hook
- css
- Lifting state
- css animation
- ํ๋ก๊ทธ๋๋จธ์ค
- ํผํฐ ๋ชจ๋น
- ์ ์ด์ฝฅ ๋์จ
- BFS์ DFS
- git
- State
- JavaScript
- html
- ๋ฒ๋ค๋ง
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- Study
- WEB
- ๋ฒ์ง ๋ชจํ
- ํ ์คํธ ์์
- jsx
- props drilling
- ์ปดํจํฐ ๊ณตํ
- ์คํ ์ด์ธ ์ฝ๋
- Cmarket
- Today
- Total
roqkf
[JavaScript] DOM ๋ณธ๋ฌธ

DOM(Document Object Model)์ด๋?
- HTML ์์๋ฅผ Object์ฒ๋ผ ์กฐ์ํ ์ ์๋ Model
- HTML์ ์์ฃผ ์์ ๋ถ๋ถ๊น์ง ์ ๊ทผํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ DOM์ด๋ผ๊ณ ํ๋ค.
- DOM์ ์ด์ฉํ๋ฉด HTML๋ก ๊ตฌ์ฑ๋ ์นํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ง์ด๊ฒ ๋ง๋ค ์ ์๋ค.
- document ๊ฐ์ฒด์ ๊ตฌํ๋ผ ์๋ค.
- DOM์ 'ํธ๋ฆฌ ๊ตฌ์กฐ'๋ค! (๋ถ๋ชจ๊ฐ ์์์ ์ฌ๋ฌ ๊ฐ ๊ฐ์ง๊ณ , ๋ถ๋ชจ๊ฐ ํ๋์ธ ๊ตฌ์กฐ๊ฐ ๋ฐ๋ณต)
HTML์ JavaScript๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
<script src="index.js"></script>
- HTML ํ์ผ๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋ index.js๋ฅผ ๋ถ๋ฌ์จ๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฑ๋ ์ฝ๋๋ฅผ ํด์ํ๋ ๊ณผ์ ์์ <script> ์์๋ฅผ ๋ง๋๋ฉด HTML ํด์์ ์ ์ ๋ฉ์ถ๊ณ <script> ์์๋ฅผ ๋จผ์ ์คํํ๋ค! ๋ฑ์ฅ๊ณผ ํจ๊ป ์คํ๋๋ค๋ ์ !
<script> ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
- <head> ์์์ ์ถ๊ฐ
- </body> ๊ฐ ๋๋๊ธฐ ์ ์ ์ถ๊ฐ
DOM ๊ตฌ์กฐ ์กฐํ
body๋ฅผ ์ฐพ์๋ณด์
console.dir(document.body)
+ console.log์ ๋ฌ๋ฆฌ DOM์ ๊ฐ์ฒด์ ๋ชจ์ต์ผ๋ก ์ถ๋ ฅํ๋ค.
CREATE
document.createElement('div') // <div> ์์ ๋ง๋ค๊ธฐ
์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ ๋ง๋ค์ด์ง ๊ฑธ ํ์ธํ ์ ์์๋ค!

์๋ก ๋ง๋ div ์์๋ฅผ ํ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํ ๊น?
๋ณ์์ ํ ๋น ํ์!
const tweetDiv = document.createElement('div')
<div>๋ฅผ ๋ง๋๋ ์์ ์ ๋ณ์ tweetDiv์ ํ ๋นํ์์ผ๋ tweetDiv๋ฅผ ํ์ฉํ๋ฉด ๋๊ฒ ๋ค!!
READ
DOM์ ์ด์ฉํด HTML Element๋ฅผ ์กฐํํ๊ธฐ
const oneTweet = document.querySelector('.tweet')
- ํด๋์ค๋ช
์ด tweet์ธ HTML ์๋ฆฌ๋จผํธ ์ค ์ฒซ ๋ฒ์งธ ์๋ฆฌ๋จผํธ๋ฅผ ์กฐํ!
?? ์ฒซ ๋ฒ์งธ ์์๋ง ๊ฐ์ ธ ์ค๋ ๊ฑฐ ๋ง๊ณ ํด๋์ค๋ช
์ด tweet์ธ ๋ชจ๋ ์๋ฆฌ๋จผํธ๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ์์๊น
const oneTweet = documetn.querySelectorAll('.tweet')
1. Document.querySelector(selectors);
- ์ฒซ ๋ฒ์งธ ์๋ฆฌ๋จผํธ๋ฅผ ๋ฐํ, ์ผ์นํ๋ ์์๊ฐ ์๋ค๋ฉด null์ด ๋ฐํ๋๋ค!
2. Document.querySelectorAll(selectors);
- ์ง์ ๋ ์
๋ ํฐ ๊ทธ๋ฃน์ ์ผ์นํ๋ ์๋ฆฌ๋จผํธ ๋ฆฌ์คํธ๋ฅผ ๋ํ๋ด๋ ์ ์ NodeList๋ฅผ ๋ฐํ
3. Document.getElementById(selectors);
- get์ผ๋ก ์์ํ๋ DOM ์กฐํ ๋ฉ์๋๋ ์กด์ฌํ๋ค
- ์ด์ ๋ฒ์ ์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ ๊ฒฝ ์จ์ผ ํ๋ค๋ฉด get ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ ์๋ ์๋ค!
* ์ค์ ๋์์ ๋์ผํจ
const getOneTweet = document.getElementById('container')
const queryOneTweet = document.querySelector('#container')
console.log(getOneTweet === queryOneTweet) // true
div๋ฅผ ์์ฑํ์ฌ container์ ๋งจ ๋ง์ง๋ง ์์์ ์์๋ก tweetDiv ์ถ๊ฐํ๊ธฐ(append();)
const container = document.querySelector('#container') // ์์ด๋๊ฐ 'container'์ธ ์๋ฆฌ๋จผํธ ์กฐํ
const tweetDiv = document.createElement('div')
container.append(tweetDiv)
UPDATE
๋น div ์์์ ๋ฌธ์์ด์ ์ฝ์ ํด ๋ณด์!
const oneDiv = document.createElement('div'); // div ์์ฑ
oneDiv.textContent = 'dev' // <div>dev</div>๋ก ์
๋ฐ์ดํธ
class๊ฐ 'tweet'์ธ ์์์ css๊ฐ ์ ์ฉ๋ผ ์๋ค๋ฉด ๋ฐฉ๊ธ ๋ง๋ div์๋ tweet ์์์ ์์ฌ์ง css๋ฅผ ๋์ผํ๊ฒ ๋ฃ๊ณ ์ถ๋ค? div์ class๋ฅผ ๋ถ์ฌํด ์ฃผ์!
oneDiv.classList.add('tweet')
๋ค๋ฅธ attribute ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ?
+ setAttribute ํจ์
element.setAttribute('attribute_name', 'attribute_value');
ex) ์์ด๋๊ฐ test์ธ ์์์ href ์์ฑ ๊ฐ ๋ณ๊ฒฝํ๊ธฐ
document.getElementById('test').setAttribute('href', '๋งํฌ ์ฃผ์');
๋๋
const tests = document.querySelector('#test');
tests.setAttribute('href', '๋งํฌ ์ฃผ์');
DELETE
const container = document.querySelector('#container')
const tweetDiv = document.createElement('div')
container.append(tweetDiv) /// container์ tweetDiv ์ถ๊ฐ
tweetDiv.remove() // tweetDiv ์ญ์
์ฌ๋ฌ ๊ฐ์ ์์ ์์๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ
document.querySelector('#container').innerHTML = '';
- ๊ฐํธํ๊ณ ํธ๋ฆฌํ์ง๋ง ์ฌ์ดํธ์ ๊ณต๊ฒฉ ๊ฒฝ๋ก๊ฐ ๋ผ์ ์ ์ฌ์ ์ธ ๋ณด์ ์ํ์ด ๋ฐ์ํ ์ ์๊ณ ํ๋ ์ง์ํ์!
๋ฐ๋ณต๋ฌธ ํ์ฉํด์ ์ฌ๋ฌ ๊ฐ์ ์์ ์์๋ฅผ ์ญ์
const container = document.querySelector('#container');
while (container.firstChild) {
container.removeChild(container.firstChild);
}
ํด๋์ค ์ด๋ฆ์ด tweet์ธ ์์๋ง ์ฐพ์์ ์ง์ฐ๊ธฐ
const tweets = document.querySelectorAll('.tweet')
tweets.forEach(function(tweet){
tweet.remove();
})
// or
for (let tweet of tweets){
tweet.remove()
}
'๐ป Development > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํด๋์ค์ ์ธ์คํด์ค (0) | 2022.11.25 |
---|---|
[JavaScript] ๊ณ ์ฐจํจ์ (0) | 2022.11.25 |
[JavaScript] Hoisting (0) | 2022.11.25 |
[JavaScript] ๊ฐ์ฒด (0) | 2022.11.25 |
[JavaScript] ๋ฐฐ์ด (0) | 2022.11.25 |