1. Home
image

JavaScript Tutorial Concepts - From Beginner to Pro

Learn JavaScript from scratch! Our tutorial covers basics to advanced concepts. Start learning today!

  • 24
  • 9 Hours
right-top-arrow
10

DOM Model in JavaScript

Updated on 07/08/2024356 Views

I believe that the DOM is an essential part of JS programming. I would suggest that every future JS developer understands the DOM concepts properly. This will make manipulating DOM with JavaScript much easier for future projects.

I started my journey with the DOM model in JavaScript by tackling simple changes to websites. Changing text content and tweaking styles felt empowering. As my confidence grew, I experimented with creating elements on the go, building small interactive components.

The DOM transformed my view of web pages. They became more than static structures, they became canvases I could reshape with JavaScript. While there's always more to learn, the DOM has become an essential tool in my development toolkit.

Let us learn more about DOM in JavaScript with example programs in this in-detail tutorial.

What is the DOM Model in JavaScript?

The DOM (Document Object Model) is how a web browser represents the structure of an HTML document. Think of it as a tree: each HTML tag is a branch, and the content within those tags are leaves. This tree-like model lets JavaScript interact with individual parts of a web page.

Why Manipulate the DOM Model in JavaScript?

Manipulating the DOM object in JavaScript makes web pages dynamic. We can change the content, style, and structure of a page even after it's loaded. This allows for things like interactive elements, smooth animations, and websites that update without full page refreshes.

DOM Model in JavaScript Standards & Compatibility

The W3C (World Wide Web Consortium) sets standards for the DOM to ensure consistent behavior across different browsers. While most modern browsers adhere well to standards, it's still important to consider compatibility. We might need to check for older browser quirks or use techniques to gracefully handle inconsistencies.

DOM Model in JavaScript Structure and Access

Let us learn about DOM Tree in JavaScript as well as the structure and access.

DOM Structure: Node Types

  • Element nodes: HTML tags become element nodes (e.g., <body>, <div>, <p>).
  • Attribute nodes: Attributes within HTML tags become nodes (e.g., class="title", href="https://...").
  • Text nodes: The actual textual content within elements is represented as text nodes.

Example HTML structure:

<div id="container">

<h1 class="title">Welcome!</h1>

<p>This is a paragraph.</p>

</div>

DOM Tree in JavaScript

  • div (element node)
  • h1 (element node)

Example: "Welcome!" (text node)

  • p (element node)

Example: "This is a paragraph." (text node)

Accessing Nodes

getElementById(id): Retrieves an element based on its unique id attribute.

getElementsByTagName(tagName): Returns a collection (like an array) of elements with the specified tag name.

getElementsByClassName(className): Returns a collection of elements having the specified class.

Relationships and Traversal

parentNode: References the parent element of a node.

childNodes: A collection of child nodes within an element.

firstChild: The first child node of an element.

nextSibling: The next node at the same level in the tree.

previousSibling: The previous node at the same level.

Manipulating the DOM Model in JavaScript

Let us now learn how to manipulate the DOM in this DOM JavaScript tutorial.

Creating Elements: document.createElement()

  • document.createElement() lets you create new HTML elements from scratch. For instance, document.createElement('img') creates an image element.

Modifying Elements

1. Changing content:

  • textContent sets or gets the plain text content within an element.
  • innerHTML sets or gets the full HTML markup inside an element.

2. Manipulating attributes:

  • setAttribute() adds or modifies an attribute on an element.
  • getAttribute() retrieves an attribute's value.
  • removeAttribute() removes an attribute entirely.

3. Adding and removing nodes:

  • appendChild() adds a node as the last child of another node.
  • insertBefore() inserts a node as a child, before a specified reference node.
  • removeChild() removes a child node from its parent.

4. Modifying styles:

  • The style property gives access to inline CSS. You can manipulate styles directly, like element.style.color = 'red'.

Example of Manipulating the DOM Model in JavaScript

Let us check out a working example of manipulating the DOM model in JavaScript.

Here is a picture after compilation, before clicking the ‘Change Content’ button below:

Now, here is a picture of the content and text getting switched (replaced with the other content) after we click the ‘Change Content’ button:

You can try this fun example yourself by just creating an index.html file and copy-pasting the below code:

<!DOCTYPE html>

<html>

<head>

<title>DOM Manipulation Example</title>

<style>

#content {

background-color: #f0f0f0;

padding: 20px;

}

</style>

</head>

<body>

<div id="content">

<h1>Original Heading</h1>

<p>This is some text content.</p>

</div>

<button id="changeButton">Change Content</button>

<script>

const button = document.getElementById('changeButton');

const heading = document.querySelector('h1'); // You can use querySelector too

const paragraph = document.querySelector('p');

button.addEventListener('click', () => {

heading.textContent = 'Heading Changed!';

paragraph.textContent = 'The paragraph text has been updated too.';

paragraph.style.color = 'blue';

});

</script>

</body>

</html>

Event Handling for DOM Model in JavaScript

The DOM supports a wide array of events that signal user interactions or browser actions:

  • Mouse events: "click", "mouseover", "mouseout", "mousedown", etc.
  • Keyboard events: "keydown", "keyup", "keypress"
  • Form events: "submit", "change", "focus"
  • Document/window events: "load", "resize", "scroll"

Event Listeners

  • addEventListener(): The preferred way to attach functions that will execute when an event occurs. Example: button.addEventListener('click', myClickFunction).
  • Removing listeners: removeEventListener() detaches an event listener.

Event Propagation: Capturing vs. Bubbling

  • Bubbling: Events travel upwards from the specific element to its ancestors (parents, grandparents, etc.).
  • Capturing: Events travel downwards from ancestors to the target element. You can control this order with a parameter in addEventListener().

Common Event Use Cases

Here are some JavaScript DOM event use cases:

  • Form validation: Checking input as a user types or before form submission.
  • Interactive elements: Creating buttons that change appearance, menus that open/close, etc.
  • Dynamic updates: Fetching data and updating webpage content without reloading.

If you wish to master technologies such as JavaScript, you can enroll in upGrad’s software engineering courses.

Advanced Techniques for DOM Model in JavaScript

DOM Model in JavaScript Libraries

Libraries like jQuery simplify DOM manipulation by providing a cleaner syntax, built-in animations, and cross-browser compatibility fixes. DOM libraries streamline development and reduce the need to write repetitive/complex JavaScript code for common DOM tasks.

However, libraries can add overhead (file size). With modern browser standardization, the need for these libraries lessens, although they remain useful for certain projects.

Working with Complex Structures

  1. Efficiency with tables and lists: Use techniques like insertRow and deleteRow for tables, and consider DocumentFragment for building up large sets of elements before insertion.
  2. Large datasets: Break down DOM updates into smaller chunks to avoid freezing the browser. Consider using a virtual DOM approach (like the one React uses) for super complex data-driven manipulations.

Performance Considerations

Here are some considerations for performance when using JavaScript dom functions:

  • Minimize DOM reflow: DOM reflows (recalculations of layout) can be expensive. Batch changes to reduce their occurrences.
  • Event delegation: For many similar elements, attach a single event listener to a parent, rather than each individual element.
  • Profiling tools: Use browser developer tools to identify performance bottlenecks due to DOM manipulation.

Guide to Real-World Projects Using DOM Model in JavaScript

A To-Do List

1. Basic HTML Structure

  • A text input field (<input type="text">) to add new tasks.
  • A button (<button>) to trigger adding tasks.
  • An unordered list (<ul>) to display the task items.

2. JavaScript Functionality

  • Event listener: Attach a 'click' event listener to the button.
  • Get task input: Inside the event handler, retrieve the value from the text input field.
  • Create list item: Use document.createElement('li') to create a new list item element.
  • Set text content: Set the textContent of the list item to the task input.
  • Append to list: Use appendChild() to add the new list item to the <ul>.
  • Clear input: Reset the input field for the next task.

3. (Optional) Additional Features

  • Delete task: Add a "delete" button within each list item, giving users the ability to remove tasks.
  • Marking as complete: Let users toggle a "completed" class on list items, visually styling them differently.
  • Local storage: Use localStorage to save the task list, so it persists even if the user leaves the page.

Image Gallery or Slideshow

1. Basic HTML Structure

  • A container element (<div>) to hold the images.
  • Use <img> tags for your images. Initially, you can hide all but the first image.

2. JavaScript Functionality

  • Image array: Store references to your image sources (URLs or file paths) in a JavaScript array.
  • Next/Previous buttons: Add 'next' and 'previous' buttons.
  • Navigation logic:
    • Keep track of the current image index.
    • Event listeners for the buttons will increment/decrement the current index, and update the src attribute of the main image.
  • Slideshow (Optional): Use setInterval to cycle through images automatically.

3. Styling (CSS)

  • Position the images and buttons.
  • Add transitions/animations for smooth changes (optional).

Simple Game

1. Basic HTML Structure

  • An input field for the user's guess.
  • A button for submitting the guess.
  • An area to display feedback messages (e.g., "Too high", "Too Low", "You Win!").

2. JavaScript Functionality

  • Generate secret number: Use Math.random() to create a random number as the target.
  • Event listener: Attach an event listener to the button click.
  • Guess comparison:
    • Get the user's guess from the input field.
    • Compare the guess with the secret number, giving appropriate feedback.
    • Keep track of the number of attempts.

3. Game Logic

  • Set a limit on the number of guesses.
  • Provide options to play again.

Wrapping Up

Now that we know about DOM javascript meaning, I would like to remind you that practicing is the only way to actually master the DOM Model in JavaScript. You can also check out the other tutorials we have to learn more tools such as JS.
If you wish to master essential JS concepts like the JavaScript DOM functions, you can enroll in any of the full stack development courses by upGrad.

Frequently Asked Questions

1. What is the DOM model in JavaScript?
The DOM is an API (Application Programming Interface) that allows JavaScript to access, modify, and interact with the elements of an HTML document.

2. What is an example of a DOM structure?
Consider this simple HTML: <div><p>Hello</p></div> The DOM would represent this as a tree with a "div" node as the root, and a "p" node containing the text "Hello" as its child.

3. What is the DOM model in XML?
The DOM model in XML is very similar to the HTML DOM; it represents an XML document in a tree-like structure for programmatic access.

4. What is the role of JavaScript in the DOM?
JavaScript uses the DOM to modify and interact with a web page's structure, style, and content dynamically.

5. What is the use of DOM model?
The DOM model is essential for creating dynamic and interactive web experiences.

6. How does DOM model work?
The browser parses an HTML document and builds a tree-like representation of it (the DOM). JavaScript can then interact with this tree through the DOM API.

7. What is the full form of DOM model?
DOM stands for Document Object Model.

8. What is DOM advantage?
The main advantage of the DOM is that it gives developers a standardized way to manipulate web page elements with code.

9. How DOM is created?
The web browser creates the DOM automatically when it loads an HTML (or XML) document.

image

mukesh

Working with upGrad as a Senior Engineering Manager with more than 10+ years of experience in Software Development and Product Management.

Get Free Career Counselling
form image
+91
*
By clicking, I accept theT&Cand
Privacy Policy
image
Join 10M+ Learners & Transform Your Career
Learn on a personalised AI-powered platform that offers best-in-class content, live sessions & mentorship from leading industry experts.
right-top-arrowleft-top-arrow

upGrad Learner Support

Talk to our experts. We’re available 24/7.

text

Indian Nationals

1800 210 2020

text

Foreign Nationals

+918045604032

Disclaimer

upGrad does not grant credit; credits are granted, accepted or transferred at the sole discretion of the relevant educational institution offering the diploma or degree. We advise you to enquire further regarding the suitability of this program for your academic, professional requirements and job prospects before enr...