Skapa och lägga till element
Använd createElement, setAttribute, append och remove för att dynamiskt bygga och ändra DOM-strukturen.
Skapa och lägga till element är en gratis lektion i Frontend Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Frontend Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Frontend Academy innehåller totalt 4 lektioner.
createElement
document.createElement(tagName) skapar ett nytt element i minnet – det finns ännu inte i DOM. Därefter anger du dess egenskaper och lägger till det i trädet.
const btn = document.createElement('button');
btn.textContent = 'Click Me';
btn.classList.add('btn-primary');
btn.setAttribute('type', 'button');
// btn is in memory, not yet in the pageappend och appendChild
parent.append(child) lägger till en nod eller sträng sist bland förälderns barn. appendChild är den äldre motsvarigheten, men append är mer flexibel – den accepterar flera noder och strängar.
const list = document.querySelector('ul');
const item = document.createElement('li');
item.textContent = 'New item';
list.append(item); // adds to end of listprepend, before, after
parent.prepend() lägger till i början. element.before() infogar före elementet. element.after() infogar efter det.
const header = document.querySelector('.card-header');
const icon = document.createElement('img');
icon.src = 'icon.svg';
header.prepend(icon); // icon goes before all other children
const divider = document.createElement('hr');
header.after(divider); // divider goes after the headerinsertAdjacentHTML
element.insertAdjacentHTML(position, htmlString) infogar HTML på en angiven position utan att ersätta befintligt innehåll. Positioner: 'beforebegin', 'afterbegin', 'beforeend', 'afterend'.
const container = document.querySelector('.list');
container.insertAdjacentHTML('beforeend', `
<li class="item">
<span class="name">Alice</span>
</li>
`);
// Still avoid with user input — XSS riskcloneNode
element.cloneNode(true) skapar en djup kopia av ett element, inklusive alla dess underordnade element. Skicka med false för en ytlig kopia. Användbart för att duplicera template-element.
const template = document.querySelector('.card-template');
const clone = template.cloneNode(true);
clone.querySelector('.card-title').textContent = 'New Card';
container.append(clone);removeChild och remove()
element.remove() tar bort elementet från DOM. Det äldre parent.removeChild(child) fungerar också. Borttagna element kan fortfarande refereras till via variabler och läggas tillbaka.
const item = document.querySelector('.to-delete');
item.remove(); // clean modern syntaxreplaceWith
oldElement.replaceWith(newElement) ersätter det gamla elementet i DOM med det nya. Bekvämare än det äldre replaceChild-mönstret.
const old = document.querySelector('.old-banner');
const fresh = document.createElement('div');
fresh.className = 'new-banner';
fresh.textContent = 'Updated!';
old.replaceWith(fresh);DocumentFragment för batchinsättningar
En DocumentFragment är en lättviktig behållare som inte finns i DOM. Bygg ett underträd i den och lägg sedan till det i en enda operation — det orsakar bara ett omflöde i stället för N.
const fragment = document.createDocumentFragment();
users.forEach(user => {
const li = document.createElement('li');
li.textContent = user.name;
fragment.append(li);
});
// One DOM write:
document.querySelector('ul').append(fragment);Elementet <template>
HTML-elementet <template> innehåller markup som inte renderas förrän det klonas med JavaScript. Det är bättre än att bygga strängar eller klona synliga element.
<template id="card-tpl">
<div class="card">
<h3 class="card-title"></h3>
<p class="card-body"></p>
</div>
</template>Ställa in egenskaper kontra attribut
Elementegenskaper (el.href, el.src, el.value) är ofta det mest direkta och prestandamässigt bästa sättet att ange värden. Attribut (setAttribute) passar bäst för anpassade attribut eller ARIA-attribut som inte har någon motsvarande DOM-egenskap.
// Property (preferred for standard HTML attributes):
img.src = '/photo.webp';
link.href = '/about';
// setAttribute (for ARIA and custom attributes):
button.setAttribute('aria-expanded', 'true');
div.setAttribute('data-index', '3');Undvika innerHTML med användarinnehåll
När element byggs från data från användaren ska du alltid använda DOM-metoder (createElement, textContent, setAttribute) i stället för att bygga en HTML-sträng och använda innerHTML. Interpolera aldrig användarindata i HTML-strängar.
// DANGEROUS:
container.innerHTML = `<p>${userComment}</p>`;
// SAFE:
const p = document.createElement('p');
p.textContent = userComment;
container.append(p);Snabb kontroll
Du behöver lägga till 100 listelement i en <ul> utan att orsaka 100 omflöden. Vilket tillvägagångssätt är bäst?
Sammanfattning: Skapa DOM-element
createElement skapar element i minnet. append/prepend/before/after infogar dem i trädet. remove() tar bort ett element. DocumentFragment samlar insättningar i omgångar för bättre prestanda. Elementet lagrar återanvändbar markup. Använd alltid textContent med användardata, aldrig innerHTML.
Lär dig HTML med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 41
- Lektioner
- 163
Vanliga frågor
Är lektionen ”Skapa och lägga till element” gratis?
Ja – hela texten till ”Skapa och lägga till element” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Frontend Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Frontend Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skapa och lägga till element”?
Använd createElement, setAttribute, append och remove för att dynamiskt bygga och ändra DOM-strukturen. Ni övar på Frontend Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Frontend Academy?
Du behöver inga förkunskaper. Utbildningen i Frontend Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Skapa och lägga till element”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Frontend Academy-lektionen?
Ja. Varje Frontend Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- querySelector och querySelectorAll
- addEventListener och Event-objektet
- Ändra innehåll: textContent, innerHTML och classList
- Skapa och lägga till element