[JS] DOM ๋‹ค๋ฃจ๊ธฐ๐Ÿ—ƒ

TATAยท2023๋…„ 1์›” 8์ผ
0

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
11/25

โœ”๏ธ DOM Elements ์ œ์–ด ๋ฐฉ๋ฒ•

๐Ÿ” ํŠน์ • ์š”์†Œ ์ฐพ๊ธฐ

querySelector

document.querySelector('css') : ํ•ด๋‹นํ•˜๋Š” ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ์˜ DOM Element๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
document.querySelectorAll('css') : ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  DOM Element๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

const character = document.querySelectorAll("button");

const tataBtn = character[0];
const cookyBtn = character[1];

// โ—๏ธ์ฐธ๊ณ ) querySelectorAll๋กœ ๊ฐ€์ ธ์˜จ HTML ์š”์†Œ๋“ค์€
//        '์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด'๋กœ for๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

getElement

document.getElementById('์•„์ด๋””') : ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” id์†์„ฑ์„ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ ์ฐพ์•„์˜จ๋‹ค.
document.getElementsByClassName('class') : ์ฃผ์–ด์ง„ ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ชจ๋“  ์ž์‹ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(์œ ์‚ฌ๋ฐฐ์—ด)
document.getElementsByTagName('tag') : Element์˜ HTMLCollection๊ณผ ์ฃผ์–ด์ง„ ํƒœ๊ทธ๋ช…์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Root node๋ฅผ ํฌํ•จํ•ด ์ „์ฒด document๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰๋œ๋‹ค.


๐Ÿ—ƒ ์š”์†Œ ๋งŒ๋“ค๊ธฐ

create, append, insert

document.createElement('tag') : DOM Elemnet ์ƒ์„ฑ
Node.append(Node) : ๋ถ€๋ชจ๋…ธ๋“œ ์•ˆ์— ๋งจ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ถ”๊ฐ€

append ์‚ฌ์šฉ ์˜ˆ์‹œ๐Ÿ‘‡

const div = document.createElement("div");
document.body.append(div, "hello");

// result
<body>
  <div></div>
  hello
</body>

// โ—๏ธ์ฐธ๊ณ ) append๋Š” ๋…ธ๋“œ ๊ฐ์ฒด(Node object)๋‚˜ DOMString(text)๋ฅผ
//        ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์‹ ์š”์†Œ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
//        return ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Node.appendChild(Node) : ๋ถ€๋ชจ๋…ธ๋“œ ์•ˆ์— ๋งจ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ถ”๊ฐ€

// โ—๏ธ์ฐธ๊ณ ) appendChild๋Š” append๋ฉ”์†Œ๋“œ์™€ ๋‹ค๋ฅด๊ฒŒ
//        ์˜ค์ง ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋งŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Node ๊ฐ์ฒด๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
//        return ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Node.insertBefor(newNode, refNode) : ๋ถ€๋ชจ๋…ธ๋“œ ์•ˆ์—์„œ refNode ์•ž์—๋‹ค๊ฐ€ newNode ์ถ”๊ฐ€
Node.prepend(Node) : ๋ถ€๋ชจ๋…ธ๋“œ ์•ˆ์— ๋งจ ์ฒซ๋ฒˆ์งธ ์ž์‹์œผ๋กœ ์ƒˆ๋กœ์šด ๋…ธ๋“œ ์ถ”๊ฐ€


๐Ÿ—ƒ ์ธ์ ‘ ๋…ธ๋“œ ์ ‘๊ทผ

children, parent, Child, Sibling

Node.children : ํ˜ธ์ถœ๋œ Element์˜ ๋ชจ๋“  ์ž์‹์„ ๋ฐ˜ํ™˜
Node.parentElement : ํ˜ธ์ถœ๋œ Element์˜ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜
Node.firstElementChild : ์ฒซ๋ฒˆ์งธ ์ž์‹์„ ๋ฐ˜ํ™˜
Node.lastElementChild : ๋งˆ์ง€๋ง‰ ์ž์‹์„ ๋ฐ˜ํ™˜
Node.previousElementSibling : ์ด์ „ ํ˜•์ œ๋ฅผ ๋ฐ˜ํ™˜
Node.nextElementSibling : ์ดํ›„ ํ˜•์ œ๋ฅผ ๋ฐ˜ํ™˜


๐Ÿ—ƒ ์†์„ฑ ์ถ”๊ฐ€

setAttribute

element.setAttribute('attribute', 'value') : ์ง€์ •๋œ ์†์„ฑ์„ Element์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ง€์ •๋œ ๊ฐ’์„ ์ œ๊ณตํ•œ๋‹ค.

attribute : ์†์„ฑ์˜ ํŠน์ • ์ด๋ฆ„์„ ์„ค์ •
value : ์†์„ฑ์— ๊ฐ’์„ ํ• ๋‹น

setAttribute ์‚ฌ์šฉ ์˜ˆ์‹œ๐Ÿ‘‡

document.getElementById('test').setAttribute('href', 'https://tata.velog.com');

๐Ÿ—ƒ classList ์ œ์–ด

add, remove, toggle

element.classList.add('className') : ์ง€์ •ํ•œ class๊ฐ’์„ ์ถ”๊ฐ€
element.classList.remove('className') : ์ง€์ •ํ•œ class๊ฐ’์„ ์ œ๊ฑฐ
element.classList.toggle('className') : class๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ์ œ๊ฑฐ, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด class๋ฅผ ์ถ”๊ฐ€


๐Ÿ—ƒ Element ์ œ๊ฑฐ

remove, removeChild

node.remove() : node๋ฅผ ์ œ๊ฑฐ
node.removeChild(child) : ์ž์‹ ๋…ธ๋“œ(child)๋ฅผ ์ œ๊ฑฐ

removeChild๋กœ ๋ชจ๋“  ์ž์‹์š”์†Œ๋ฅผ ์ง€์šฐ๋Š” ์˜ˆ์‹œ๐Ÿ‘‡

const container = document.querySelector('#container');
while (container.firstChild) {
  container.removeChild(container.firstChild);
}

์ž์‹ ์š”์†Œ๋ฅผ ํ•˜๋‚˜๋งŒ ๋‚จ๊ธฐ๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.๐Ÿ‘‡

const container = document.querySelector('#container');
while (container.children.length > 1) {
  container.removeChild(container.lastChild);
}

๐Ÿ—ƒ DOM ๋ณ€๊ฒฝ

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ

node.innerHTML = 'ํ…์ŠคํŠธ'
node.textContent = 'ํ…์ŠคํŠธ'
node.style.color = 'red'
node.style.display = 'none'
node.hidden = true
input.value = 'ํ…์ŠคํŠธ'


๐Ÿ‘‰ DOM ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•œ ๋ธ”๋กœ๊ทธ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

profile
๐Ÿพ

0๊ฐœ์˜ ๋Œ“๊ธ€