JavaScript DOM and Browser API Cheat Sheet

DOM selection, manipulation, browser events, storage, URL APIs, clipboard, observers, and forms.

View
StandardDetailedCompact
Export
Copy the compact sheet, download it, or print it.
Download
`D` dense toggle · `C` copy all
## DOM Selection
querySelector
const form = document.querySelector("form.login");
querySelectorAll
const buttons = document.querySelectorAll("[data-action]");
getElementById
const app = document.getElementById("app");
Element.closest
const card = event.target.closest(".card");
classList add/remove/toggle
el.classList.add("is-open");
el.classList.remove("hidden");
el.classList.toggle("active");
## DOM Manipulation
Create element
const li = document.createElement("li");
li.textContent = "New item";
append / appendChild
list.append(li);
// or list.appendChild(li);
insertAdjacentHTML
container.insertAdjacentHTML("beforeend", "<p>Hello</p>");
Remove node
node.remove();
replaceChildren
list.replaceChildren(...newItems);
textContent vs innerHTML
el.textContent = "<safe text>";
el.innerHTML = "<strong>Unsafe unless trusted</strong>";
dataset API
const id = card.dataset.id;
## Events
addEventListener
button.addEventListener("click", handleClick);
Listener options
window.addEventListener("scroll", onScroll, { passive: true });
removeEventListener
button.removeEventListener("click", handleClick);
Event delegation
list.addEventListener("click", (event) => {
  const item = event.target.closest("[data-id]");
  if (!item) return;
  console.log(item.dataset.id);
});
stopPropagation / preventDefault
link.addEventListener("click", (event) => {
  event.preventDefault();
  event.stopPropagation();
});
Dispatch custom event
el.dispatchEvent(new CustomEvent("cart:add", { detail: { sku: "ABC" } }));
Abort listener with signal
const controller = new AbortController();
window.addEventListener("resize", onResize, { signal: controller.signal });
controller.abort();
## Browser APIs
localStorage set/get
localStorage.setItem("theme", "dark");
const theme = localStorage.getItem("theme");
sessionStorage
sessionStorage.setItem("draft", JSON.stringify(draft));
URLSearchParams
const params = new URLSearchParams(location.search);
const q = params.get("q");
history.pushState
history.pushState({ tab: "profile" }, "", "?tab=profile");
Clipboard writeText
await navigator.clipboard.writeText(code);
IntersectionObserver
const observer = new IntersectionObserver((entries) => {
  entries.forEach((entry) => console.log(entry.isIntersecting));
});
observer.observe(target);
ResizeObserver
const ro = new ResizeObserver((entries) => {
  console.log(entries[0].contentRect.width);
});
ro.observe(element);
matchMedia
const darkMode = window.matchMedia("(prefers-color-scheme: dark)");
## Forms and Validation
Read FormData
const formData = new FormData(form);
const email = formData.get("email");
Handle form submit
form.addEventListener("submit", async (event) => {
  event.preventDefault();
  const formData = new FormData(form);
  await save(formData);
});
checkValidity/reportValidity
if (!form.checkValidity()) {
  form.reportValidity();
}
Read valueAsNumber
const qty = input.valueAsNumber;
Read selected file
const file = fileInput.files?.[0];