Modifying the Document in JavaScript (DOM Manipulation)
JavaScript allows you to dynamically modify the Document Object Model (DOM) to change, add, or remove elements and attributes on a webpage.
🔹 1. Changing HTML Content (innerHTML, textContent)
You can modify the content inside an element using:
- innerHTML→ Can insert HTML content (not safe from XSS).
- textContent→ Inserts only text (safer, doesn’t parse HTML).
✔ Example: Changing content dynamically
✅ Use textContent when inserting user input to prevent XSS attacks.
🔹 2. Changing Element Attributes (setAttribute, .src, .href)
Modify attributes like src, href, id, class, etc.
✔ Example: Changing an image source
✔ Using setAttribute
🔹 3. Changing CSS Styles (style, classList)
✔ Example: Modifying styles directly
✔ Example: Adding or removing CSS classes
🔹 4. Creating and Appending New Elements (createElement, appendChild)
✔ Example: Creating a new paragraph
✔ Example: Adding an item to a list
🔹 5. Removing Elements (removeChild, remove)
✔ Example: Removing an element from the DOM
or (modern approach):
🔹 6. Replacing Elements (replaceChild)
✔ Example: Replacing a paragraph with a heading
🔹 7. Inserting HTML (insertAdjacentHTML)
✔ Example: Inserting HTML before an element
🔹 Positions Available:
| Position | Description | 
|---|---|
| "beforebegin" | Inserts before the element itself | 
| "afterbegin" | Inserts inside, before first child | 
| "beforeend" | Inserts inside, after last child | 
| "afterend" | Inserts after the element itself | 
🔹 8. Cloning Elements (cloneNode)
✔ Example: Cloning an element
🔹 9. Wrapping and Unwrapping Elements
✔ Example: Wrapping an element inside a div
✔ Example: Unwrapping an element
🔹 10. Modifying Multiple Elements (Looping)
✔ Example: Changing all paragraphs' text color
✔ Example: Adding a class to all list items
📌 Summary
| Method | Purpose | 
|---|---|
| innerHTML | Set or get HTML content | 
| textContent | Set or get text content (safe from XSS) | 
| setAttribute(name, value) | Modify attributes like src,href,alt | 
| .style.property | Change inline styles | 
| .classList.add/remove/toggle | Modify CSS classes | 
| createElement(tag) | Create a new element | 
| appendChild(node) | Append element to a parent | 
| removeChild(node),.remove() | Remove an element | 
| replaceChild(newNode, oldNode) | Replace an element | 
| insertAdjacentHTML(position, html) | Insert HTML at specific position | 
| cloneNode(true/false) | Clone an element | 
🚀 Mastering these techniques will help you dynamically update your web pages! 🎯

