[HTML/CSS] ์ํ๋ ์์น์ ๋ ธ๋ ์ฝ์ ํ๊ธฐ — insertAdjacentHTML
insertAdjacentHTML vs innerHTML
element.insertAdjacentHTML(position, htmlString)
element.insertAdjacentHTML()
๋ฉ์๋๋ ์ธ์๋ก ์ ๋ฌํ ๋ฌธ์์ด(htmlString)์ HTML๋ก ํ์ฑํด์ ์ง์ ๋ ์์น(position)์ ์ฝ์
ํ๋ ๋ฉ์๋๋ค. ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์ง ์๋ ๊ณณ์ ์ฌ์ฉํ๋ฉด createElement()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค ๊ฐํธํ๊ฒ ์์๋ฅผ ์ฝ์
ํ ์ ์๋ค. ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์์ ์ฒ๋ฆฌํ ๋๋ XSS ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ณ๋์ sanitizing์ด ํ์ํ๋ค.
๋น์ทํ ๋ฉ์๋๋ก element.innerHTML()
์ด ์์ง๋ง ์ฝ์
์์น๋ฅผ ์ง์ ํ ์ ์๊ณ , ๊ธฐ์กด ์์๋ฅผ ๋ฎ์ด์ฐ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์์๋ฅผ ๋ค์ ํ์ฑํด์ผ ํ๋ ๋จ์ ์ด ์๋ค. ์ด๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ผ์ผํฌ ์ ์๋ค.
์์ HTML ๊ตฌ์กฐ - CodePen ๋งํฌ โผ
<main>
<ul>
<li>Todo 1</li>
<li>Todo 2</li>
<li>Todo 3</li>
<!-- ์ถ๊ฐํ๊ณ ์ถ์ ์์น -->
</ul>
</main>
innerHTML
์ ์ฌ์ฉํ์ ๋ โผ
const $ul = document.querySelector("ul");
// ์ ์ฒด <ul> ํ๊ทธ ๋ค์ ํ์ฑ ๐
$ul.innerHTML += '<li>Todo 4</li>';
insertAdjacentHTML
์ ์ฌ์ฉํ์ ๋ โผ
const $ul = document.querySelector("ul");
// 2๋ฒ์งธ ์ธ์๋ก ๋๊ธด htmlString ๋ฌธ์์ด๋ง ํ์ฑ ๐
$ul.insertAdjacentHTML("beforeend", '<li>Todo 4</li>');
๐ก ์ํ๋ ์์น์ ์๋ฆฌ๋จผํธ ๋ ธ๋๋ฅผ ์ฝ์ ํ๋ insertAdjacentElement() ๋ฉ์๋๋ ์๋ค. htmlString ๋์ DOM ์์๋ฅผ ์ง์ ์ ๋ฌํ๋ ๊ฒ๋ง ๋ค๋ฅด๊ณ ๋๋จธ์ง ์ฌ์ฉ๋ฒ์ ๋์ผํ๋ค.
ํ๋ผ๋ฏธํฐ
์์น position
insertAdjacentHTML
์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ง์ ํ ์ ์๋ position
๊ฐ์ ์๋์ ๊ฐ๋ค. ๋์ ์์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ์์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์ ์์๋ <ul>
ํ๊ทธ๊ฐ ๋๋ค.
position | ์ฝ์ ์์น |
"beforebegin" |
๋์ ์์ ๋ฐ๋ก ์ด์ ์ ์ฝ์ (๋ถ๋ชจ ์์๊ฐ ์์ ๋๋ง ๊ฐ๋ฅ) |
"afterend" |
๋์ ์์ ๋ฐ๋ก ๋ค์ ์ฝ์ (๋ถ๋ชจ ์์๊ฐ ์์ ๋๋ง ๊ฐ๋ฅ) |
"afterbegin" |
๋์ ์์์ ์ฒซ ๋ฒ์งธ ์์์ผ๋ก ์ฝ์ |
"beforeend" |
๋์ ์์์ ๋ง์ง๋ง ์์์ผ๋ก ์ฝ์ |
<main>
<!-- beforebegin ์ฝ์
์์น -->
<ul>
<!-- afterbegin ์ฝ์
์์น -->
<li>Todo 1</li>
<li>Todo 2</li>
<li>Todo 3</li>
<!-- beforeend ์ฝ์
์์น -->
</ul>
<!-- afterend ์ฝ์
์์น -->
</main>
๋ฌธ์์ด htmlString
insertAdjacentHTML
๋ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ ๋ฌธ์์ด์ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ฑ ํ ์ ์๋ ์ ํจํ HTML ๋งํฌ์
ํํ์ฌ์ผ ํ๋ค. ์ด๊ณ ๋ซ๋ ํ๊ทธ๋ฅผ ๋นผ๋จน์ง ์๋๋ก ์ฃผ์ํ์.
"<li>hello</li>" โ
"<li>hello<li>" โ
"<li>hello" โ
๋ ํผ๋ฐ์ค
๊ธ ์์ ์ฌํญ์ ๋ ธ์ ํ์ด์ง์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํด ์ฃผ์ธ์
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Algorithm] ์ด์ง ํ์ ๋ฐ ๋ณํ ์๊ณ ๋ฆฌ์ฆ Binary Search Algorithm
[Algorithm] ์ด์ง ํ์ ๋ฐ ๋ณํ ์๊ณ ๋ฆฌ์ฆ Binary Search Algorithm
2024.06.02 -
[Network] ์ฃ์ง ํ๋ซํผ ์ํคํ ์ฒ Edge Platform Architecture
[Network] ์ฃ์ง ํ๋ซํผ ์ํคํ ์ฒ Edge Platform Architecture
2024.06.02 -
[Next.js] App Router / ์๋ฒ ์ปดํฌ๋ํธ ์ฃผ์ ๋ด์ฉ ์ ๋ฆฌ
[Next.js] App Router / ์๋ฒ ์ปดํฌ๋ํธ ์ฃผ์ ๋ด์ฉ ์ ๋ฆฌ
2024.06.01 -
[Algorithm] ๋ฏธ๋๋งฅ์ค / ์ํ-๋ฒ ํ ๊ฐ์ง์น๊ธฐ ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ
[Algorithm] ๋ฏธ๋๋งฅ์ค / ์ํ-๋ฒ ํ ๊ฐ์ง์น๊ธฐ ์๊ณ ๋ฆฌ์ฆ ํบ์๋ณด๊ธฐ
2024.06.01