λ€ κΉλ¨Ήμ΄λ²λ¦° μλ°μ€ν¬λ¦½νΈλ₯Ό λ€μ 볡기μν€κΈ° μν΄ μμν ν¬λ 리μ€νΈ λ§λ€κΈ°!
λ§λ€λ€ 보λ μλ°μ€ν¬λ¦½νΈ μ²μ λ°°μΈ λ μ¨λ΄λ €κ°λ μ½λμ λ³λ° μ°¨μ΄κ° μλ€..
μ²μμ΄λ λκ°μ΄ μμ±νλ©΄ λ¨μ λ³΅μ΅ λ¨μ λ Έκ°λ€μΌλΏ..!!!!
λλΌλ λ°μ λκ² μμ΄μΌ νμ§ μμκΉ.......???????????λ μκ°μ
λ°λ³΅λλ μ½λλ₯Ό μ€μ¬λ³΄κΈ°λ‘ νλ€!
π» μ΄μ μ½λ
μ μλ λ λ€ νμν μμλ€ λμμμ΄ μμ± ν
λ λ€ λΆμ¬λ²λ¦¬κΈ°..
λΆλͺ¨μμ μμ±, μμμμ μμ±, μμμμ λΆλͺ¨μμμ λΆμ΄κΈ°..
μκΎΈ λμ΄λ§ κ°λ createElement, appendChild......μ§κΈμ§κΈν..
⨠리ν©ν λ§
function createElement({
tagName,
properties,
parent,
children,
count = 1,
}) {
function create() {
const element = document.createElement(tagName); // νκ·Έ μμ±
Object.assign(element, properties); // μμ± ν λΉ
parent?.appendChild(element); // λΆλͺ¨μ μΆκ°
// μμ μμκ° μμ κ²½μ° μ¬κ·μ μΌλ‘ μμ μμ±
children?.map((child) => {
child.parent = element; // νμ¬ μμ±λ μμλ₯Ό λΆλͺ¨λ‘ μ€μ
createElement(child); // μμ μμλ₯Ό μν createElement μ¬κ· νΈμΆ
});
return element;
}
if (count > 1) {
const results = [];
for (let i = 0; i < count; i++) {
results.push(create());
}
return results;
} else {
return create();
}
}
- createElementμ appendChildλ₯Ό μ¬μ¬μ© κ°λ₯ν createElement ν¨μλ‘ λ³κ²½νμ¬ λ°λ³΅λλ μ½λλ₯Ό μ κ±°νμλ€.
- createElement ν¨μλ μ¬λ¬ μμλ₯Ό ν λ²μ μμ±ν μ μλλ‘ count νλΌλ―Έν°λ₯Ό μΆκ°νμλ€. μ΄λ₯Ό ν΅ν΄ μ¬λ¬ μμλ₯Ό λμ μΌλ‘ μ½κ² μΆκ°ν μ μκ² λμλ€.
- λΆλͺ¨-μμ κ΄κ³μ DOM ꡬ쑰λ₯Ό μ½κ² λ§λ€κΈ° μν΄ children νλΌλ―Έν°μ μ¬κ· νΈμΆμ μ¬μ©νλ€. μ΄λ‘μ¨ λΆλͺ¨ μμκ° μμ μμλ₯Ό κ°λ 볡μ‘ν DOM νΈλ¦¬λ κ°λ¨νκ² κ΅¬μ±ν μ μλ€.
- Object.assignμ μ¬μ©νμ¬ μμμ μμ±λ€μ μ μ°νκ² ν λΉν μ μλλ‘ νμλ€. μ΄λ₯Ό ν΅ν΄ μ¬λ¬ μμ±μ ν λ²μ μ€μ ν μ μκ³ , μΆκ°μ μΈ μμ±μ΄ μκΈ°λλΌλ ν¨μ μμ μμ΄ μ²λ¦¬ν μ μλ€.
Object.assign()μ κ°μ²΄μ μμ±λ€μ λ€λ₯Έ κ°μ²΄μ 볡μ¬νλ μν μ νλ€.
μ¬κΈ°μλ properties κ°μ²΄μ μμ±λ€μ μμ±λ νκ·Έ(element)μ 볡μ¬νμ¬, νκ·Έμ μμ±μ μ€μ νλ€.
⨠리ν©ν λ§ν createElement μ¬μ©νκΈ°
children μμκ° λμ μμ΄ μ겨 무ν λ€μ¬μ°κΈ°κ° λ°μ..
κ°λ μ±μ μν΄ header, inputContainer, itemContainerμ ν° λ©μ΄λ¦¬λ‘ λλμ΄μ μμ±ν΄μ£Όμλ€.
const app = createElement({
tagName: "div",
properties: { id: "app" },
parent: document.body,
});
const header = createElement({
tagName: "header",
properties: { id: "header" },
parent: app,
children: [
{
tagName: "div",
properties: { className: "counter" },
children: [
{
tagName: "span",
properties: { textContent: "total" },
},
{
tagName: "span",
properties: { textContent: "0" },
},
{
tagName: "span",
properties: { textContent: "completed" },
},
{
tagName: "span",
properties: { textContent: "0" },
},
],
},
{
tagName: "h1",
properties: { textContent: "Tπ Dπ― LIST", className: "title" },
},
{
tagName: "span",
properties: { textContent: "ν μΌμ κΈ°λ‘νμΈμπ±" },
},
],
});
// μ΄ν μλ΅..
μ°Έκ³ π§
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
'π©βπ» hello, world! > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] DOM λ€λ£¨κΈ° :: textContent, innerText, innerHTML, appendChild, insertAdjacentHTML (2) | 2024.09.12 |
---|---|
map / forEach μ°¨μ΄ (0) | 2024.09.11 |