๐ŸŸจ JavaScript/๊ฐœ๋…

[์ฝ”๋”ฉ์• ํ”Œ,mdn] js๋กœ html ์ƒ์„ฑํ•˜๋Š” ๋ฒ• (appendChild, createElement, insertAdjacentHTML ๋“ฑ)

Zoeeey 2023. 1. 18. 21:49

1. document.createElement() / appendChild() / clondeNode() / importNode()

<div id="test">
  <!-- ์•ˆ๋…• -->
</div>

<script>
  var a = document.createElement('p');
  a.innerHTML = '์•ˆ๋…•';
  document.querySelector('#test').appendChild(a);
</script>
  • document.createElement() : html ์ž๋ฃŒ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • element.appendChild() : ํ•œ ๋…ธ๋“œ๋ฅผ ํŠน์ • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ ๋ฆฌ์ŠคํŠธ ์ค‘ ๋งˆ์ง€๋ง‰ ์ž์‹์œผ๋กœ ๋ถ™์ธ๋‹ค. (ํ•œ ๋…ธ๋“œ๋Š” ๋ฌธ์„œ์ƒ์˜ ๋‘ ์ง€์ ์— ๋™์‹œ์— ์กด์žฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๋…ธ๋“œ๊ฐ€ ์ด๋ฏธ ๋ถ€๋ชจ๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ์šด ์œ„์น˜๋กœ ์ด๋™ํ•œ๋‹ค.)
    * append()์™€์˜ ์ฐจ์ด์  : append๋Š” jquery์—์„œ ์ง€์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋กœ, ์›์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ธ appendChild()์™€ ๋‹ค๋ฅด๋‹ค. ๋˜ํ•œ append๋Š” .append(`<p>๋‚ด์šฉ</p>`) ์ฒ˜๋Ÿผ ์š”์†Œ๋ฅผ ๋ฐ”๋กœ ๋•Œ๋ ค๋ฐ•์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด, appendChild()๋Š” createElement๋กœ ๋ฐ˜๋“œ์‹œ ์š”์†Œ๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•ด์•ผ๋งŒ ํ•œ๋‹ค.
  • cloneNode() : ์œ„ appendChild์™€ ๋‹ค๋ฅด๊ฒŒ ์ƒˆ๋กœ์šด ๋ถ€๋ชจ์˜ ๋ฐ‘์œผ๋กœ ๋ถ™๊ธฐ ์ „์— ๋…ธ๋“œ๋ฅผ ๋ณต์ œํ•œ๋‹ค. (์ด ๋ฉ”์†Œ๋“œ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋…ธ๋“œ๋“ค์€ ์ž๋™์ ์œผ๋กœ ๋ฌธ์„œ์— ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.)
  • importNode() : appendChild()๋Š” ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ๋…ธ๋“œ๋ฅผ ์ด๋™์‹œํ‚ค์ง€ ๋ชปํ•˜๋ฏ€๋กœ, ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ์ด๋™์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

2. ๋ณ€์ˆ˜์— html ์ €์žฅ / insertAdjacentHTML()

<div id="test">
  <!-- ์•ˆ๋…• -->
</div>

<script>
  var a = '<p>์•ˆ๋…•</p>';
  document.querySelector('#test').insertAdjacentHTML('beforeend', a);
</script>
  • ๋ณ€์ˆ˜ ์•ˆ์— html์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

element.insertAdjacentHTML(position, text)

html ํŠน์ • ํ…์ŠคํŠธ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ , ํŠน์ • ์œ„์น˜ DOM tree ์•ˆ์— ์›ํ•˜๋Š” node๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋ฏธ ์‚ฌ์šฉ์ค‘์ธ element๋Š” ๋‹ค์‹œ ํŒŒ์‹ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. (= element ์•ˆ์— ์กด์žฌํ•˜๋Š” element๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค) ๊ทธ๋ž˜์„œ innerHTML๊ณผ ๋‹ค๋ฅด๋‹ค. (innerHTML ๋ณด๋‹ค ์ž‘์—…์ด ๋œ ๋“œ๋ฏ€๋กœ ๋” ๋น ๋ฆ„.)

<!-- beforebegin -->
<p>
<!-- afterbegin -->
foo
<!-- beforeend -->
</p>
<!-- afterend -->

position

  • 'beforebegin' : element ์•ž์— ๋ถ™๋Š”๋‹ค
  • 'afterbegin' : element ์•ˆ์— ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ child
  • 'beforeend' : element ์•ˆ์— ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ child
  • 'afterend' : element ๋’ค์— ๋ถ™๋Š”๋‹ค

์ถœ์ฒ˜ : ์ฝ”๋”ฉ์• ํ”Œ https://codingapple.com/ / MDN https://developer.mozilla.org/ko/