DEV Community

Guru prasanna
Guru prasanna

Posted on

JavaScript - Document Object Model (DOM)

DOM

--> The DOM (Document Object Model) is a programming interface for web documents.
--> It represents the structure of an HTML or XML document as a tree of objects.
--> With the DOM, developers can interact with and manipulate web pages dynamically using JavaScript.
--> The HTML DOM allows JavaScript to change the content of HTML elements.

Image description

How to find and access HTML elements in an HTML page?

  • Finding HTML elements by id

Ex: id="intro"

const element = document.getElementById("intro");
Enter fullscreen mode Exit fullscreen mode
  • Finding HTML elements by tag name

Ex: <p>

const element = document.getElementsByTagName("p");
Enter fullscreen mode Exit fullscreen mode
  • Finding HTML elements by class name

Ex: class="intro"

const x = document.getElementsByClassName("intro"); 
Enter fullscreen mode Exit fullscreen mode
  • Finding HTML elements by CSS selectors

--> To find all HTML elements that match a specified CSS selector (id, class names, types, attributes, values of attributes, etc), use the querySelectorAll() method.

Ex:<p> elements with class="intro"

const x = document.querySelectorAll("p.intro"); 
Enter fullscreen mode Exit fullscreen mode
  • Finding HTML elements by HTML object collections

Nodes

Everything in the DOM is a node.For example-element, text, attribute.

Element Nodes:
--> Represents an HTML or XML element.
--> Examples: <div>, <p>, <h1>, <ul>, etc.

<h1>Hello, World!</h1>
Enter fullscreen mode Exit fullscreen mode

In above example <h1> is an element node.

Text Node:
--> Represents the text content inside an element.

<h1>Hello, World!</h1>
Enter fullscreen mode Exit fullscreen mode

The text Hello, World! inside the <h1> is a text node.

Creating New HTML Elements (Nodes):

1. Create an Element: Use the document.createElement() method to create an HTML element.

2. Create a Text Node: Use the document.createTextNode() method to create a text node.

3. Append Text to the Element: Use the appendChild() method to attach the text node to the created element.

4. Create a div Element: Use document.createElement() again to create a <div> element.

5. Insert the Element into the div: Use appendChild() to place the previously created element into the div.

6. Insert the div into the Document: Finally, append the div to the document body (or any other desired parent element).

Example:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="para">
    </div>
    <script>
        const elem = document.createElement("h1");
        const text = document.createTextNode("payilagam");
        elem.appendChild(text);
        document.getElementById("para").appendChild(elem);    
    </script>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

Output:

Image description

Changing HTML Style:

Syntax:
document.getElementById(id).style.property = new style

Example:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body:hover{
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="para" onclick="change()">
        <h1>Payilagam</h1>
    </div>
    <script>
        function change(){
            para.style.color="red";
        } 
    </script>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

Output:

  • Before click

Image description

  • After click

Image description

Project: Random color generator

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

    </style>
</head>

<body>
    <button id="btn" onclick="color()">Click</button>
    <script>
        function color(){
            const colorchange = "rgb(" + Math.round(Math.random() * 255) + ", " + Math.round(Math.random() * 255) + ", " + Math.round(Math.random() * 255) + ")";
            document.body.style.background = colorchange;
        }
    </script>
</body>

</html>
Enter fullscreen mode Exit fullscreen mode

Output:

Image description

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay