Ce face document.createElement
createElement("div") creează un element gol, care nu apare în pagină până nu îl adaugi cu append, prepend, before sau after. Între timp îi poți seta textul, clasele, atributele și ascultătorii de evenimente.
createTextNode creează un nod de text, iar createComment un comentariu HTML. Crearea elementelor astfel este sigură față de XSS, spre deosebire de innerHTML cu texte venite de la utilizator.
Parametri
| Parametru | Descriere |
|---|---|
eticheta |
Numele etichetei HTML, de exemplu "li" sau "button". |
Ce returnează
Elementul nou.
Exemple
Exemplul 1: O listă construită din date
<ul id="orase"></ul>
<script>
const lista = document.getElementById("orase");
for (const oras of ["Iași", "Cluj", "Timișoara"]) {
const li = document.createElement("li");
li.textContent = oras;
li.classList.add("oras");
lista.append(li);
}
console.log(lista.outerHTML);
</script>
Rezultat în browser
<ul id="orase"><li class="oras">Iași</li><li class="oras">Cluj</li><li class="oras">Timișoara</li></ul>
Exemplul 2: Un buton cu eveniment, text și comentariu
const buton = document.createElement("button");
buton.type = "button";
buton.textContent = "Adaugă în coș";
buton.addEventListener("click", () => console.log("adăugat"));
document.body.append(document.createComment("buton generat"), buton, document.createTextNode(" (stoc limitat)"));
buton.click();
console.log(document.body.lastChild.nodeType, document.body.lastChild.textContent);
Rezultat în browser
adăugat
3 (stoc limitat)
Greșeli frecvente
- Creezi elementul și uiți să-l adaugi în pagină. Nu apare nicăieri până la
append. - Pui text de la utilizator cu
innerHTMLîntr-un element creat. FoloseștetextContent.
Comenzi înrudite
append / prepend / before / after: Adaugă elemente sau texte la sfârșitul, la începutul, înaintea sau după un element.textContent / innerHTML: Citește sau schimbă conținutul unui element: ca text simplu sau ca HTML.document.createDocumentFragment / importNode: Construiește multe elemente într-un container invizibil și le adaugă în pagină dintr-o singură mișcare.