D : ์น ํ์ด์ง ๋ฌธ์(HTML)
O : ๊ฐ์ฒด
M : ๋ชจ๋ธ
DOM์ HTML์ ๊ณ์ธตํ์์ผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ง๋ ๊ฐ์ฒด๋ชจ๋ธ์ด๋ค.
DOM์ ์น ํ์ด์ง ๋ฌธ์, ์ฆ HTML๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๋ก ์๋ ์ญํ ์
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ DOM ๊ตฌ์กฐ์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๊ทธ๋ค์ด ๋ฌธ์ ๊ตฌ์กฐ, ์คํ์ผ, ๋ด์ฉ ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋์์ค๋ค.
tag ์ด๋ฆ์ ์ด์ฉํ ์์ ์ทจ๋ ๊ฐ๋ฅ!
const pTags = document.getElementsByTaName('p');
ํด๋น ํ์ด์ง์ ์๋ ๋ชจ๋ p ํ๊ทธ๊ฐ ๋ฐฐ์ด์ ํํ๋ก ๋ด๊ฒจ์ ๋ฐํ๋๋ค.
CSS ์ ํ์๋ฅผ ์ด์ฉํ ์์ ๋ ธ๋ ์ทจ๋
const el = document.querySelector('category_item');
category_item ์ด๋ผ๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ์ฒซ ๋ฒ์งธ ์์ ๋ฐํ
getElementByTagName ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ๋ฐฐ์ด์ด ์๋ ์์๋ฅผ ๋ฐํํ๋ค.
id๋ฅผ ์ด์ฉํ ์์ ์ทจ๋
const element = document.getElementById('NM_NEWSSTAND_HEADER');
id๊ฐ NM_NEWSSTAND_HEADER์ธ ์์๊ฐ ๋ฐํ๋๋ค.
class๋ฅผ ์ด์ฉํ ์์ ์ทจ๋
const element = document.getElementsByClassName('category_item');
ํด๋นํ์ด์ง์ ์๋ class ์ด๋ฆ์ด category_item์ธ ๋ชจ๋ ์์๊ฐ ๋ฐฐ์ด์ ํํ๋ก ๋ด๊ฒจ์ ๋ฐํ๋๋ค.
//HTML body ํ๊ทธ์ ์ ๊ทผํ์ฌ ๋ด์ฉ ์กฐ์
document.body.innerHTML = '๋ด์ฉ ๋ฐ๊พธ๊ธฐ';
innerHTML์ ํตํด ์์์ ๋ด์ฉ, ์ฆ ์์ ํ๊ทธ์ ์ข
๋ฃ ํ๊ทธ ์ฌ์ด์ ๋ด์ฉ์ ์ ๊ทผํ์ฌ ์์ ๊ฐ๋ฅ.
body ํ๊ทธ์ ์ ๊ทผํ์ฌ ๋ด๋ถ ๋ด์ฉ์ '๋ด์ฉ ๋ฐ๊พธ๊ธฐ' ๋ผ๋ ๋ฌธ์์ด๋ก ์กฐ์.
body ํ๊ทธ ์์ ์์๊ฐ ๋ง๋๋ผ๋ innerHTML์ ์ฌ์ฉํ๋ฉด ์์ ๋ด์ฉ์ด ์ ๋ถ ๊ต์ฒด๋๋ค.
//id๊ฐ 'NM_NEWSSTAND_HEADER'์ธ ์์ ์ทจ๋ >> ๋ณ์์ ์ ์ฅ
const element = document.getElementByTd('NM_NEWSSTAND_HEADER');
//ํด๋น ์์์ ์คํ์ผ ์กฐ์
element.style.backgroundColor = 'blue';
HTML ์์์ style์ ์ ๊ทผํ์ฌ ์คํ์ผ์ ์กฐ์ํ ์ ์๋ค.
HTML ํ์ด์ง์ ์ ๊ทผํ์ฌ id๊ฐ NMNEWSSTAND_HEADER์ธ ์์๋ฅผ ์ทจ๋ํ์ฌ element ๋ณ์์ ์ ์ฅํ์๋ค.
ํด๋น ์์์ style์ ์ ๊ทผํ์ฌ ๋ฐฐ๊ฒฝ์์ blue๋ก ๋ฐ๊พธ์๋ค.
DOM์ ์ ๊ทผํ์ฌ ์คํ์ผ์ ์์ ํ๋ ๊ฒฝ์ฐ๋ _camelCase๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
//h1 ์์ ์์ฑ ๋ฐ ๋ด์ฉ ์ถ๊ฐ
const item = document.createElement('h1') //<h1></h1>
item.innerHTML = '์ ๋ชฉ์ถ๊ฐ'; //<h1>์ ๋ชฉ์ถ๊ฐ</h1>
//h1 ์์๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ์์น ์ทจ๋
const newsHeader = codument.getElementById('NM_NEWSSTAND_HEADER');
//newsHeader ์์์ผ๋ก item ์ถ๊ฐ
newsHeader.appendChild(item);
.createElement(tagName) ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด HTML ์์๋ฅผ ์์ฑํ ์ ์๋ค.
์์ฑํ h1 ์์์ innerHTML์ ํตํด ๋ด์ฉ์ ์ค์ ํด์ฃผ์๋ค.
์์๋ ์์ฑ๋ง ๋์ ๋ฟ, HTML์ ์ถ๊ฐ๋ ์ํ๊ฐ ์๋๋ผ ๋์ผ๋ก ํ์ธํ ์๋ ์๋ค.
ํน์ ์์์ ์์ ์์๋ก append ์ํค๋ ๋ฐฉ๋ฒ์ appendChild ์ด๋ค!
id๊ฐ NM_NEWSSTAND_HEADER์ธ ์์๋ฅผ ์ฐพ์์(newsHeader), ์์์ผ๋ก item์ ์ถ๊ฐํ๋ค.
//์์์ id ์์ (์ถ๊ฐ)
element.id = 'newId';
//์์์ class ์์ (์ถ๊ฐ)
element.className = 'newClass';
//์์ ์คํ์ผ ์์ (์ถ๊ฐ)
element.style.backgroundColor = 'red';
document ๊ฐ์ฒด๋ก ํน์ ์์์ ์ ๊ทผํ ์ ์๋ฏ์ด, ์์์ ์์ฑ์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
ํน์ ์์์ ์์ฑ์ ์ ๊ทผํ์ฌ id, ํน์ class๋ ์ถ๊ฐํ๊ณ style ๊ฐ๋ ์์ ํ ์ ์๋ค.