๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒDevelopment/JavaScript

[JS] DOM์ด๋ž€? #3 ๋…ธ๋“œ ์ƒ์„ฑ,์ถ”๊ฐ€,๋ณต์ œ,์‚ญ์ œ

by geumsong 2023. 3. 26.
728x90

*DOM: ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(The Document Object Model)

 

1. ์ƒ์„ฑํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ul์ด ์žˆ๋‹ค.
  • document.createElement('li')๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  • document.createTextNode('pink')๋„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

 

๊ทธ๋‹ค์Œ li์— appendChild(pinkText)์ด์šฉํ•ด์„œ ๋ฐฉ๊ธˆ ๋งŒ๋“  text node๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

 

 

 

 

๊ทธ๋‹ค์Œ์— ul.appendChild(li)๋„ฃ์–ด์ฃผ๋ฉด ๋งˆ๋ฌด๋ฆฌ๋œ๋‹ค.

 

 

* appendChild(): ์ง€์ •ํ•œ ๋ถ€๋ชจ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.
* insertBefore() : ์ง€์ •ํ•œ ๋ถ€๋ชจ๋…ธ๋“œ์˜ ๊ทธ ์ด์ „์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.

//Console

const newLi3 = document.createElement('li);
undefined

cost textNode3 = documnet.createTextNode('black');
undefined

newLi3.appendChild(textNode3);
"black"

const red = document.getElementById('red');
undefined

ul.insertBefore(newLi3, red);
<li>...</li>

ul.appendChild(red); //์šฐ๋ฆฌ๊ฐ€ ๋ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์€ ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ
<li id ="red">_</li>

ul.insertBefore(red, newLi3); // red๋Š” black ์ด์ „์œผ๋กœ ์ด๋™ํ•œ๋‹ค. newLi3๋Š” black์ด๋ฏ€๋กœ
<li id ="red">_</li>

์ด Red๊ฐ’์ด ์ด๋™ํ•œ๋‹ค

 

 

 

 

 


2. ๋…ธ๋“œ ๋ณต์ œ (cloneNode)

const newBlack = newLi3.colneNode(); //black์„ ๋ณต์ œํ•ด์„œ newBlack์„ ๋งŒ๋“ค์—ˆ๋‹ค.

ul.appendChild(newBlack);
โ–ถ<li>...</li> // liํƒœ๊ทธ๋งŒ ๋ณต์ œ๋˜์—ˆ๋‹ค. ๊ด„ํ˜ธ์— ์•„๋ฌด๊ฒƒ๋„ ์ ์ง€ ์•Š๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด node์˜ ์ž์‹๋งŒ ๋ณต์ œ๋œ๋‹ค.


- clone ๋…ธ๋“œ๋Š” ์ธ์ˆ˜๋กœ ๋ถˆ๋ฆฐ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค.

 

 

const newBlack2 = newLi3.cloneNode(true); // true๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค. true๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๊นŠ์€ ๋ณต์ œ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์ž์‹๋…ธ๋“œ๊นŒ์ง€ ๋ชจ๋‘ ๋ณต์ œ๋œ๋‹ค.์—ฌ๊ธฐ์„œ ์ž์‹๋…ธ๋“œ๋Š” TextNode์ž„.
ul.appendChild(newBlack2); // ์ถ”๊ฐ€ํ•˜๋ฉด text๊นŒ์ง€ ์ž˜ ๋ณต์ œ๋˜์–ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„ ์ฐธ๊ณ 

 


 

 

 

3.๋…ธ๋“œ ์‚ญ์ œ

 

ul.removeChild(red); //red์ง€์›Œ์ง

ul.removeChild(newBlack2); // ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ–ˆ๋˜ black์ด ์‚ญ์ œ๋๋‹ค.

red์™€ black์ด ์‚ญ์ œ๋˜์—ˆ๋‹ค.

 

ul.removeChild(ul.firstElementChild); // ์ฒซ๋ฒˆ์งธ ์ž์‹์š”์†Œ์ธ black์ด ์‚ญ์ œ๋จ

ul.removeChild(ul.lastElementChild); // ๋งˆ์ง€๋ง‰ ์ž์‹์š”์†Œ์ธ black์ด ์‚ญ์ œ๋จ

 

 

์ฐธ๊ณ :

https://velog.io/@hovelopin/JS-DOM-%EC%A0%9C%EC

728x90

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

์ตœ๊ทผ๊ธ€

skin by ยฉ 2024 ttutta