Element: insertAdjacentHTML() λ©μλ - Web API | MDN
Element μΈν°νμ΄μ€μ insertAdjacentHTML() λ©μλλ μ§μ λ ν μ€νΈλ₯Ό HTML νΉμ XMLλ‘ νμ±νκ³ κ²°κ³Ό λ Έλλ€μ μ§μ λ μμΉμ DOM νΈλ¦¬μ μ½μ ν©λλ€.
developer.mozilla.org
λͺ¨λ κ²μ΄ μ¬λ μ λ§ λμ§ μμ.
"beforebegin"
μμ μ΄μ μ μμΉν©λλ€. μ€μ§ μμκ° DOM νΈλ¦¬μ μκ³ λΆλͺ¨ μμλ₯Ό κ°μ§κ³ μμ λλ§ μ ν¨ν©λλ€.
"afterbegin"
μμ λ°λ‘ μμμ μ²μ μμ μ΄μ μ μμΉν©λλ€.
"beforeend"
μμ λ°λ‘ μμμ λ§μ§λ§ μμ μ΄νμ μμΉν©λλ€.
"afterend"
μμ μ΄νμ μμΉν©λλ€. μ€μ§ μμκ° DOM νΈλ¦¬μ μκ³ λΆλͺ¨ μμλ₯Ό κ°μ§κ³ μμ λλ§ μ ν¨ν©λλ€.
μΉ λΈλΌμ°μ κ° HTML νμ΄μ§λ₯Ό νμνλ κ³Όμ μ ν¬κ² λ€μκ³Ό κ°μ΅λλ€:
- νμ±(Parsing): HTML μ½λλ₯Ό μ½μ΄ DOM νΈλ¦¬(λ¬Έμ κ°μ²΄ λͺ¨λΈ)λ₯Ό λ§λλλ€.
- λ λλ§(Rendering): DOM νΈλ¦¬λ₯Ό κΈ°λ°μΌλ‘ νλ©΄μ μ€μ λ‘ μμλ₯Ό 그리λ κ³Όμ μ λλ€. μ¬κΈ°μλ μμμ ν¬κΈ°, μμΉ, μμ λ±μ κ³μ°νλ **λ μ΄μμ(Layout/Reflow)**κ³Ό κ³μ°λ μ 보λ₯Ό λ°νμΌλ‘ ν½μ μ μ±μλ£λ **νμΈν (Painting/Repaint)**μ΄ ν¬ν¨λ©λλ€.
insertAdjacentHTML()κ³Ό κ°μ λ©μλλ₯Ό μ¬μ©ν λ "λͺ¨λ κ²μ΄ μ¬λ λλ§ λμ§ μμ"μ μλ―Έλ λ€μκ³Ό κ°μ΅λλ€.
- ν¨μ¨μ μΈ DOM μ‘°μ: innerHTML = 'μλ‘μ΄ HTML'μ²λΌ νΉμ μμμ innerHTML μμ±μ ν΅μ§Έλ‘ λ°κΎΈλ©΄, λΈλΌμ°μ λ ν΄λΉ μμμ λͺ¨λ κΈ°μ‘΄ μμμ μ κ±°νκ³ , μλ‘μ΄ HTML λ¬Έμμ΄μ λ€μ νμ±νμ¬ μλ‘μ΄ DOM λ Έλλ₯Ό λ§λ€κ³ , κ·Έ λΆλΆμ μ²μλΆν° λ€μ λ λλ§ν΄μΌ ν©λλ€. μ΄ κ³Όμ μ λλλ‘ λΉν¨μ¨μ μΌ μ μμ΅λλ€.
- λΆλΆμ μΈ μ λ°μ΄νΈ: λ°λ©΄ insertAdjacentHTML()μ μ΄λ―Έ μ‘΄μ¬νλ μμμ νΉμ μμΉ(beforebegin, afterbegin, beforeend, afterend)μ μλ‘μ΄ HTML λ¬Έμμ΄μ μ½μ νλ λ°©μμ λλ€. μ΄λ λ§μΉ κΈ°μ‘΄ DOM νΈλ¦¬μ μλ‘μ΄ λλκ°μ§λ μμ λ§λΆμ΄λ κ²κ³Ό κ°μ΅λλ€. λΈλΌμ°μ λ μλ‘ μ½μ λ λ΄μ©κ³Ό κ·Έ μ£Όλ³μ μν₯μ λ°λ μ΅μνμ λΆλΆλ§ λ μ΄μμμ λ€μ κ³μ°νκ³ λ€μ 그리면 λ©λλ€. μ 체λ₯Ό λ€μ 그릴 νμκ° μμ΅λλ€.
κ²°λ‘ μ μΌλ‘, "λͺ¨λ κ²μ΄ μ¬λ λλ§ λμ§ μμ"μ insertAdjacentHTML() λ©μλκ° DOMμ μ‘°μν λ λΆνμν λΉμ©μ΄ ν° μ 체 λλ κ΄λ²μν μμμ μ¬κ³μ° λ° μ¬κ·Έλ¦¬κΈ°λ₯Ό μ λ°νμ§ μκ³ , νμν λΆλΆλ§ ν¨μ¨μ μΌλ‘ μ λ°μ΄νΈνλ€λ κ²μ κ°μ‘°νλ λ§μ λλ€. μ΄λ μΉ μ ν리μΌμ΄μ μ μ±λ₯ μ΅μ νμ μ€μν μμμ λλ€.
λ² μ΄λ°μμ μ½λ 볡μ‘ν΄μ§.
Document.createElement() - Web API | MDN
HTML λ¬Έμμμ, Document.createElement() λ©μλλ μ§μ ν tagNameμ HTML μμλ₯Ό λ§λ€μ΄ λ°νν©λλ€. tagNameμ μΈμν μ μμΌλ©΄ HTMLUnknownElementλ₯Ό λμ λ°νν©λλ€.
developer.mozilla.org
function addElement() {
// create a new div element
var newDiv = document.createElement("div");
// and give it some content
var newContent = document.createTextNode("νμν©λλ€!");
// add the text node to the newly created div
newDiv.appendChild(newContent);
// add the newly created element and its content into the DOM
var currentDiv = document.getElementById("div1");
document.body.insertBefore(newDiv, currentDiv);
}
append()μ appendChild()λ λͺ¨λ DOM(λ¬Έμ κ°μ²΄ λͺ¨λΈ)μ μμ λ Έλλ₯Ό μΆκ°νλ λ° μ¬μ©λλ λ©μλμ΄μ§λ§, μ€μν μ°¨μ΄μ μ΄ μμ΄ μ΄λ€ μν©μ λ μ ν©νμ§κ° λ¬λΌμ§λλ€.
μ£Όμ μ°¨μ΄μ
- μΈμ(Arguments):
- appendChild(node):
- μ€μ§ νλμ Node κ°μ²΄λ§ μΈμλ‘ λ°μ μ μμ΅λλ€.
- ν μ€νΈ λ¬Έμμ΄(DOMString)μ μ§μ μ½μ ν μ μμ΅λλ€. λ¬Έμμ΄μ μ½μ νλ €λ©΄ λ¨Όμ document.createTextNode()λ₯Ό μ¬μ©νμ¬ ν μ€νΈ λ Έλλ₯Ό μμ±ν΄μΌ ν©λλ€.
- append(node1, node2, ..., string1, string2, ...):
- μ¬λ¬ κ°μ μΈμλ₯Ό λμμ λ°μ μ μμ΅λλ€.
- Node κ°μ²΄λΏλ§ μλλΌ **ν μ€νΈ λ¬Έμμ΄(DOMString)**λ μΈμλ‘ μ§μ λ°μ μ μμ΅λλ€. λ¬Έμμ΄μ μλμΌλ‘ Text λ Έλλ‘ λ³νλμ΄ μ½μ λ©λλ€.
- appendChild(node):
- λ°ν κ°(Return Value):
- appendChild(): μΆκ°λ Node κ°μ²΄ μ체λ₯Ό λ°νν©λλ€.
- append(): undefinedλ₯Ό λ°νν©λλ€.
- νΈνμ±:
- appendChild(): λΉκ΅μ μ€λλ νμ€μ΄λ©°, λͺ¨λ μ£Όμ λΈλΌμ°μ μμ κ΄λ²μνκ² μ§μλ©λλ€.
- append(): λΉκ΅μ μ΅μ νμ€(DOM Living Standard)μ μΆκ°λ λ©μλλ‘, νλ λΈλΌμ°μ μμλ λλΆλΆ μ§μλμ§λ§, μμ£Ό μ€λλ λΈλΌμ°μ μμλ μ§μλμ§ μμ μ μμ΅λλ€.
μΈμ 무μμ μ¬μ©ν κΉ?
μ΄λ¬ν μ°¨μ΄μ μ λ°νμΌλ‘ λ€μκ³Ό κ°μ κ²½μ°μ μ νν μ μμ΅λλ€.
appendChild()λ₯Ό μ¬μ©νλ κ²½μ°:
- λ¨ νλμ Node κ°μ²΄λ§ μΆκ°ν λ: νλμ μμλ₯Ό DOMμ μΆκ°ν λ κ°μ₯ κΈ°λ³Έμ μΈ λ°©λ²μ λλ€.
- μΆκ°λ Node κ°μ²΄λ₯Ό λ°νλ°μ μΆκ°μ μΈ μμ
μ ν λ: μλ₯Ό λ€μ΄, λ
Έλλ₯Ό μΆκ°ν¨κ³Ό λμμ κ·Έ λ
Έλμ μ΄λ²€νΈ 리μ€λλ₯Ό λΆμ΄κ±°λ μ€νμΌμ μ μ©ν΄μΌ ν λ μ μ©ν©λλ€.
JavaScript
const parent = document.getElementById('parent'); const newDiv = document.createElement('div'); newDiv.textContent = 'μλ‘μ΄ λ΄μ©'; const appendedNode = parent.appendChild(newDiv); // newDivκ° λ°νλ¨ appendedNode.classList.add('highlight'); // λ°νλ λ Έλμ λ°λ‘ μμ
- ꡬν λΈλΌμ°μ νκ²½μ μ§μν΄μΌ ν λ: λμ λΈλΌμ°μ νΈνμ±μ΄ νμν κ²½μ°μ μμ ν μ νμ λλ€.
append()λ₯Ό μ¬μ©νλ κ²½μ°:
- μ¬λ¬ κ°μ Node κ°μ²΄λ ν
μ€νΈ λ¬Έμμ΄μ λμμ μΆκ°ν λ: μ½λλ₯Ό λ κ°κ²°νκ² μμ±ν μ μμ΅λλ€.
JavaScript
const parent = document.getElementById('parent'); const newDiv = document.createElement('div'); newDiv.textContent = 'μλ‘μ΄ λλΈ'; const newSpan = document.createElement('span'); newSpan.textContent = 'μλ‘μ΄ μ€ν¬'; parent.append('μμ ν μ€νΈ ', newDiv, newSpan, ' λ ν μ€νΈ'); // <div id="parent">μμ ν μ€νΈ <div>μλ‘μ΄ λλΈ</div><span>μλ‘μ΄ μ€ν¬</span> λ ν μ€νΈ</div>
- ν μ€νΈ λ Έλλ₯Ό λͺ μμ μΌλ‘ μμ±νλ λ²κ±°λ‘μμ νΌνκ³ μΆμ λ: λ¬Έμμ΄μ λ°λ‘ μ½μ ν μ μμ΄ νΈλ¦¬ν©λλ€.
- μ΅μ μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ κ°κ²°μ±μ μ νΈν λ: μ½λκ° λ μ½κΈ° μ½κ³ μ§§μμ§λλ€.
κ²°λ‘ :
νλ μΉ κ°λ° νκ²½μμλ μ¬λ¬ μμλ₯Ό μΆκ°νκ±°λ ν μ€νΈλ₯Ό λ°λ‘ μ½μ νλ μ μ°μ±κ³Ό κ°κ²°μ± λλ¬Έμ **append()**κ° μ νΈλλ κ²½ν₯μ΄ μμ΅λλ€. νμ§λ§ μΆκ°λ λ Έλμ λν μ¦κ°μ μΈ μ°Έμ‘°κ° νμνκ±°λ ꡬν λΈλΌμ°μ λ₯Ό μ§μν΄μΌ νλ νΉμ μν©μμλ **appendChild()**κ° μ¬μ ν μ μ©ν©λ
append(), prepend(), before() μ΄ μΈ κ°μ§ λ©μλμ 곡ν΅μ μ λͺ¨λ DOM(λ¬Έμ κ°μ²΄ λͺ¨λΈ)μ μλ‘μ΄ λ Έλλ ν μ€νΈλ₯Ό **μ½μ (insert)**νλ λ° μ¬μ©λλ νλμ(Modern) DOM μ‘°μ λ©μλλΌλ κ²μ λλ€.
ꡬ체μ μΈ κ³΅ν΅μ μ λ€μκ³Ό κ°μ΅λλ€.
- μ¬λ¬ κ°μ μΈμλ₯Ό λ°μ μ μμ΅λλ€ (λ€μ€ μΈμ μ§μ):
- append(): λΆλͺ¨ μμμ λ§μ§λ§ μμμΌλ‘ μ¬λ¬ κ°μ λ Έλλ ν μ€νΈλ₯Ό μΆκ°ν μ μμ΅λλ€.
- prepend(): λΆλͺ¨ μμμ 첫 λ²μ§Έ μμμΌλ‘ μ¬λ¬ κ°μ λ Έλλ ν μ€νΈλ₯Ό μΆκ°ν μ μμ΅λλ€.
- before(): λμ μμμ λ°λ‘ μμ νμ μμλ‘ μ¬λ¬ κ°μ λ Έλλ ν μ€νΈλ₯Ό μ½μ ν μ μμ΅λλ€.
- μ΄λ appendChild()κ° μ€μ§ νλμ λ Έλλ§ μΆκ°ν μ μλ€λ μ κ³Ό λλΉλ©λλ€.
- Node κ°μ²΄μ DOMString(ν
μ€νΈ λ¬Έμμ΄)μ λͺ¨λ μΈμλ‘ λ°μ μ μμ΅λλ€:
- μ΄ μΈ λ©μλλ μΈμλ‘ document.createElement()λ‘ λ§λ Node κ°μ²΄λΏλ§ μλλΌ, μΌλ°μ μΈ ν μ€νΈ λ¬Έμμ΄λ μ§μ λ°μ μ μμ΅λλ€. ν μ€νΈ λ¬Έμμ΄μ μλμΌλ‘ Text λ Έλλ‘ λ³νλμ΄ μ½μ λ©λλ€.
- μ΄λ appendChild()κ° ν μ€νΈ λ¬Έμμ΄μ μ§μ λ°μ μ μκ³ , document.createTextNode()λ₯Ό ν΅ν΄ ν μ€νΈ λ Έλλ₯Ό 미리 μμ±ν΄μΌ νλ κ²κ³Ό λ€λ¦ λλ€.
- λͺ¨λ undefinedλ₯Ό λ°νν©λλ€:
- μΈ λ©μλ λͺ¨λ μμ μ μνν ν νΉλ³ν κ°μ λ°ννμ§ μμ΅λλ€. (μ΄λ appendChild()κ° μΆκ°λ λ Έλλ₯Ό λ°ννλ κ²κ³Ό λ€λ¦ λλ€.)
μ 리νμλ©΄, μ΄ λ©μλλ€μ κΈ°μ‘΄μ appendChild()λ insertBefore()λ³΄λ€ λ μ μ°νκ³ κ°κ²°νκ² DOMμ μμλ₯Ό μΆκ°ν μ μλλ‘ μ€κ³λ νλμ μΈ DOM μ‘°μ APIμ μΌλΆμ λλ€. κ°κ° μ½μ λλ μμΉ(λ, μμ, μ΄μ )λ λ€λ₯΄μ§λ§, μΈμλ₯Ό μ²λ¦¬νλ λ°©μκ³Ό λ°ν κ°μ΄ λμΌνλ€λ 곡ν΅μ μ΄ μμ΅λλ€.
'π» FE' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ ν리μΌμ΄μ μ λ°μ΄ν° νλ¦μ μ‘°μ νκΈ° μν΄ Effectλ₯Ό μ°μ§ λ§μΈμ (0) | 2025.05.24 |
---|---|
NodeList vs HTMLCollection (0) | 2025.05.16 |
children, childNodes (0) | 2025.05.16 |
querySelectorAll('li'), getElementsByTagName('li') (0) | 2025.05.14 |
μμ± , νλ‘νΌν° (0) | 2025.05.14 |