Native DOM & Web APIs Cheat Sheet

Quick reference guide for Native DOM & Web APIs: querySelector, event delegation, MutationObserver, IntersectionObserver, and Storage.

Web & Network
dom
web-api
javascript

Native browser DOM APIs provide high-performance methods for selecting elements, handling events, observing viewport visibility, and persisting data locally.

Element Selection & Manipulation

javascript
// Select single or multiple elements
const mainTitle = document.querySelector("#main-title");
const activeItems = document.querySelectorAll(".nav-item.active");

// Class & Attribute manipulation
mainTitle.classList.add("highlight", "visible");
mainTitle.classList.toggle("dark-mode");
mainTitle.setAttribute("data-state", "open");

// Dynamic Element Creation & Insertion
const newCard = document.createElement("div");
newCard.className = "card";
newCard.textContent = "Card Content";
document.body.appendChild(newCard);

Event Delegation Pattern

Attach a single event listener to a parent container rather than binding listeners to every individual child.

javascript
const listContainer = document.querySelector("#item-list");

listContainer.addEventListener("click", (event) => {
  const target = event.target;
  if (target.matches("button.delete-btn")) {
    const itemId = target.closest("li").dataset.id;
    console.log("Delete item:", itemId);
  }
});

IntersectionObserver & MutationObserver

javascript
// IntersectionObserver: Infinite scroll / Lazy loading
const observer = new IntersectionObserver((entries) => {
  entries.forEach((entry) => {
    if (entry.isIntersecting) {
      console.log("Element is visible in viewport:", entry.target);
    }
  });
}, { threshold: 0.5 });

observer.observe(document.querySelector("#sentinel"));

Web Storage API

Table
Storage TypePersistenceSize LimitAccessibility
localStoragePermanent until explicitly cleared~5MBSame-Origin
sessionStorageCleared when browser tab closes~5MBTab / Same-Origin
IndexedDBPermanent asynchronous database250MB+Same-Origin

Common Pitfalls & Tips

[!WARNING] querySelectorAll() returns a static NodeList, not a true JavaScript Array! Convert it using Array.from(nodeList) to use methods like .map() or .filter().

[!TIP] Always disconnect observers (observer.disconnect()) when components unmount to prevent memory leaks in single-page apps.