Language/JavaScript (WEB)

๐ŸŒ insertAdjacentHTML๋กœ ์‰ฝ๊ฒŒ append ํ•˜์ž

์ธํŒŒ_ 2022. 12. 4. 15:09

js-insertAdjacentHTML

DOM์— ํ…์ŠคํŠธ๋กœ๋œ html ์‚ฝ์ž…ํ•˜๊ธฐ

๊ฐœ๋ฐœ์ž๋“ค์ด ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์• ์šฉํ•ด์™”๋˜ ์ด์œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ํ…์ŠคํŠธ๋กœ ๋œ html๋ฌธ์ž์—ด์„ ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜์— ๋„ฃ์œผ๋ฉด ๋ฐ”๋กœ DOM์— ์ถ”๊ฐ€/์‚ฝ์ž…์ด ๋œ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค.

jquery-dom

$('div').append('<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>');

$('div').prepend('<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>');

$('div').after('<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>');

$('div').before('<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>');

๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋„ append, after ํ•จ์ˆ˜๊ฐ€ ์žˆ์ง€๋งŒ, ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ document.createElement("div") ํ†ตํ•ด ๋งŒ๋“  node ๊ฐ์ฒด ๋งŒ์„ ๋ฐ›์„์ˆ˜ ์žˆ์–ด, ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ์•ˆ์ข‹์•„ ๋ณ„๋กœ ์‚ฌ์šฉ์„ฑ์ด ์ข‹์ง€ ์•Š์•˜๋‹ค.

๋ฌผ๋ก  innerHTML ํ”„๋กœํผํ‹ฐ๋กœ htmlํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ๋„ฃ์„์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์–ด๋Š ์œ„์น˜์— ๋„ฃ์„์ง€์— ๋Œ€ํ•œ ์œ„์น˜๊ฐ’์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ธฐ์กด์˜ ์š”์†Œ๋ฅผ ๋ฎ์–ด์”Œ์›Œ ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ถ”๊ฐ€๋กœ innerHTML์€ DOM Tree๊ฐ€ ํ†ต์งธ๋กœ ๊ต์ฒด๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚จ๋ฐœํ•˜๋ฉด ์„ฑ๋Šฅ์ƒ ์ข‹์ง€ ๋ชปํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ insertAdjacentHTML ์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ htmlํ˜•์‹์˜ ๋ฌธ์ž์—ด์„ ๋ฐ”๋กœ DOM์— ์‚ฝ์ž…ํ• ์ˆ˜ ์žˆ๊ฒŒ๋˜์–ด, ๋”์ด์ƒ ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋”๊ตฐ๋‹ค๋‚˜ ์ œ์ด์ฟผ๋ฆฌ, innerHTML๋ณด๋‹ค ํ›จ์”ฌ ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค.


Element.insertAdjacentHTML ์‚ฌ์šฉ๋ฒ•

Element.insertAdjacentHTML

  • 'beforebegin' – <p> ์š”์†Œ ๋ฐ”๋กœ ์•ž์— html์„ ์‚ฝ์ž…
  • 'afterbegin' – <p> ์š”์†Œ์˜ ์ฒซ ๋ฒˆ์งธ ์ž์‹ ์š”์†Œ ๋ฐ”๋กœ ์•ž์— html์„ ์‚ฝ์ž…
  • 'beforeend' – <p> ์š”์†Œ์˜ ๋งˆ์ง€๋ง‰ ์ž์‹ ์š”์†Œ ๋ฐ”๋กœ ๋‹ค์Œ์— html์„ ์‚ฝ์ž…
  • 'afterend' – <p> ์š”์†Œ ๋ฐ”๋กœ ๋‹ค์Œ์— html์„ ์‚ฝ์ž…
const $div = document.querySelector('div');

$div.insertAdjacentHTML('beforebegin', '<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>')

$div.insertAdjacentHTML('afterbegin', '<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>')

$div.insertAdjacentHTML('beforeend', '<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>')

$div.insertAdjacentHTML('afterend', '<p><span>์•ˆ๋…•ํ•˜์„ธ์š”</span></p>')
์ฐธ๊ณ ๋กœ insertAdjacentHTML ์˜ 'beforebegin' ๋ฐ 'afterend' ์˜ต์…˜์€ ๋…ธ๋“œ๊ฐ€ DOM ํŠธ๋ฆฌ ๋‚ด์— ์กด์žฌํ•˜๊ณ  ๋ถ€๋ชจ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ์—๋งŒ ๋™์ž‘ํ•œ๋‹ค.
๋‹จ, ์•„๋ฌด๋ฆฌ insertAdjacentHTML์ด๋ผ๋„ ์ •ํ†ต์˜ createElement๋กœ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์•ฝ๊ฐ„ ๋Š๋ฆฌ๋‹ค.

Element.insertAdjacentHTML
๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ด์œ ๊ฐ€ ์—†๋‹ค