The Document Object Model (DOM) is a programming interface for HTML and XML documents. It represents the page so that programs can change the document structure, style, and content. In JavaScript, you can use the DOM to manipulate elements on a web page dynamically, responding to user actions or other events.
What is the DOM?
The DOM treats an HTML document as a tree of nodes, where each node represents part of the page. The most common types of nodes include:
- Document node – Represents the whole document.
- Element nodes – Represent HTML elements like
<div>
,<p>
,<ul>
, etc. - Text nodes – Represent the text inside elements.
- Attribute nodes – Represent element attributes like
class
,id
, etc.
Accessing the DOM
To work with the DOM using JavaScript, you can use several built-in methods. These methods are available on the document
object.
Common DOM Selectors
getElementById(id)
Returns the element with the specified ID. javascriptCopyEditconst heading = document.getElementById("main-title");
getElementsByClassName(class)
Returns a collection of elements with the specified class. javascriptCopyEditconst items = document.getElementsByClassName("list-item");
getElementsByTagName(tag)
Returns all elements with the specified tag name. javascriptCopyEditconst paragraphs = document.getElementsByTagName("p");
querySelector(selector)
Returns the first element that matches a CSS selector. javascriptCopyEditconst firstItem = document.querySelector(".list-item");
querySelectorAll(selector)
Returns all elements that match a CSS selector. javascriptCopyEditconst allItems = document.querySelectorAll("ul li");
Modifying the DOM
Once you have selected an element, you can manipulate it using properties and methods.
Changing Content
innerHTML
Changes the HTML content inside an element. javascriptCopyEditdocument.getElementById("main-title").innerHTML = "Welcome!";
textContent
Changes only the text content (ignores HTML tags). javascriptCopyEditdocument.getElementById("main-title").textContent = "Hello World";
Changing Attributes
setAttribute()
Sets a new attribute or changes the value of an existing one. javascriptCopyEditdocument.getElementById("link").setAttribute("href", "https://example.com");
getAttribute()
Gets the value of an attribute. javascriptCopyEditconst href = document.getElementById("link").getAttribute("href");
Changing Styles
You can change styles directly through the style
property.
javascriptCopyEditdocument.getElementById("box").style.backgroundColor = "blue";
document.getElementById("box").style.fontSize = "20px";
Creating and Removing Elements
Create a New Element
javascriptCopyEditconst newItem = document.createElement("li");
newItem.textContent = "New List Item";
document.querySelector("ul").appendChild(newItem);
Remove an Element
javascriptCopyEditconst itemToRemove = document.querySelector("li");
itemToRemove.remove();
Event Handling
You can make your webpage interactive by listening to events.
javascriptCopyEditdocument.getElementById("btn").addEventListener("click", function () {
alert("Button Clicked!");
});
Common events:
click
mouseover
mouseout
keydown
submit
Example: Interactive List
htmlCopyEdit<ul id="todo-list">
<li>Learn HTML</li>
<li>Learn CSS</li>
</ul>
<button id="add-btn">Add JavaScript</button>
<script>
document.getElementById("add-btn").addEventListener("click", function () {
const newItem = document.createElement("li");
newItem.textContent = "Learn JavaScript";
document.getElementById("todo-list").appendChild(newItem);
});
</script>
Conclusion
The HTML DOM is a powerful tool that lets you create dynamic, interactive web pages. By understanding how to select elements, change content, and handle events, you can build engaging websites with just JavaScript. Experiment with different selectors and methods to gain confidence and build more complex interactions.