Dynamic UI
Update content without page reload
The DOM (Document Object Model) is the in-memory representation of HTML created by the browser.
JavaScript interacts with this structure to:
Dynamic UI
Update content without page reload
User Interaction
Handle clicks, inputs, keyboard events
Data Rendering
Convert API data into UI
Real Apps
Forms, dashboards, modals, lists
// Old waysdocument.getElementById("id");document.getElementsByClassName("class");// Modern, flexibledocument.querySelector(".card");document.querySelectorAll(".btn");getElementById
Fastest, returns single element
querySelector
Uses CSS selectors, flexible
querySelectorAll
Returns NodeList (not array)
element.textContent;element.innerText;element.innerHTML;element.textContent = "Hello";element.innerHTML = "<b>Hello</b>";element.setAttribute("id", "main");element.getAttribute("id");
element.classList.add("active");element.classList.remove("hidden");element.classList.toggle("open");const div = document.createElement("div");div.textContent = "Hello";
document.body.append(div);parent.append(child);parent.prepend(child);element.before(newNode);element.after(newNode);element.remove();parent.removeChild(child);oldEl.replaceWith(newEl);Instead of attaching listeners to many elements:
document.querySelector("#list").addEventListener("click", (e) => { if (e.target.tagName === "LI") { console.log("Item clicked"); }});DOM updates are expensive.
for (let i = 0; i < 1000; i++) { document.body.append(document.createElement("div"));}const fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) { fragment.append(document.createElement("div"));}
document.body.append(fragment);const users = ["A", "B", "C"];const ul = document.querySelector("#users");
ul.innerHTML = "";
users.forEach((user) => { const li = document.createElement("li"); li.textContent = user; ul.append(li);});element.innerHTML = userInput; // dangerous