Episode 38 of 46

Adding Elements to the DOM

Learn how to create and insert new HTML elements dynamically with JavaScript.

JavaScript can create brand new HTML elements and add them to the page dynamically.

Creating Elements

// Create a new element
let newParagraph = document.createElement("p");
newParagraph.textContent = "This paragraph was created by JavaScript!";
newParagraph.classList.add("dynamic");

// Create a link
let newLink = document.createElement("a");
newLink.href = "https://example.com";
newLink.textContent = "Visit Example";
newLink.setAttribute("target", "_blank");

Adding to the Page

let container = document.querySelector(".container");

// Add at the end
container.appendChild(newParagraph);

// Add at the beginning
container.prepend(newParagraph);

// Insert before a specific element
let reference = document.querySelector(".reference");
container.insertBefore(newParagraph, reference);

Modern Insertion Methods

let target = document.querySelector(".target");

// Insert adjacent to target
target.before(newElement);        // Before target
target.after(newElement);         // After target
target.prepend(newElement);       // First child of target
target.append(newElement);        // Last child of target

Building a List Dynamically

let fruits = ["Apple", "Banana", "Cherry", "Date"];
let list = document.createElement("ul");

fruits.forEach(function(fruit) {
    let item = document.createElement("li");
    item.textContent = fruit;
    list.appendChild(item);
});

document.body.appendChild(list);

insertAdjacentHTML

let container = document.querySelector(".container");

// Insert HTML string at specific positions
container.insertAdjacentHTML("beforebegin", "<p>Before</p>");
container.insertAdjacentHTML("afterbegin", "<p>First child</p>");
container.insertAdjacentHTML("beforeend", "<p>Last child</p>");
container.insertAdjacentHTML("afterend", "<p>After</p>");