What is domhtml. DOM manipulation in pure JavaScript
The DOM is often referred to as the DOM tree because it is made up of a tree of objects called nodes. In you learned what the Document Object Model (DOM) is, how to access the document object and change its properties using the console, and we also learned the difference between HTML source code and DOM.
In this tutorial, you'll find the HTML terminology you need to work with JavaScript and the DOM, learn about tree and DOM nodes, and learn to identify the most common types of nodes. You can also create a JavaScript program in the console to interactively modify the DOM.
HTML terminology
Understanding HTML and JavaScript terms is critical to working with the DOM. Let's take a quick look at the main terms.
Look at this HTML element:
Home
It has an anchor, which is a link to index.html.
- a - tag
- href - attribute
- html - attribute value
- Home - text.
Everything between the opening and closing tags is an HTML element.
Let's go back to the index.html file from the previous tutorial:
Document Object Model
The easiest way to access an element with JavaScript is with the id attribute. Let's add the above link to the index.html file with id="nav".
...
Document Object Model
Home
...
Load (or refresh) the page in a browser window and look at the DOM to make sure the code has been updated.
Then use the getElementById() method to access the entire element. Enter the following in the console:
document.getElementById("nav");
Home
The getElementById() method will retrieve the entire element. Now, instead of having to type in this object and method every time you need to access the nav link, you can put the element in a variable to make it easier to work with.
let navLink = document.getElementById("nav");
The navLink variable contains the anchor. Here you can easily change attributes and values. For example, to change the location of a link, change the href attribute:
navLink.href = "https://www.wikipedia.org";
You can also change the text by reassigning the textContent property:
navLink.textContent = "Navigate to Wikipedia";
Now, if you view this element in the console or check the Elements tag, you will see how it has been updated.
navlink;
Navigate to Wikipedia
Changes will be reflected on the front-end as well.
Refreshing the page will return all the original values.
At this point, you should understand how to use the document method to access an element, how to assign an element to a variable, and how to change properties and values on an element.
Tree and DOM Nodes
All elements in the DOM are defined as nodes. There are many types of nodes, but there are three main ones that you will work with most often:
- Element Node
- Text Node
- Comment Node
When an HTML element is an element in the DOM, it is called an element node. Any single text outside an element is a text node, and HTML comment– a comment node. Apart from these three types of nodes, the document object itself is the document node, which is the root node of all other nodes.
The DOM consists of a tree structure of nested nodes, often referred to as the DOM tree. You probably know what a family tree is - it is a schematic representation of family ties, which consists of parents, children and immediate family. Nodes in the DOM are also called parent and child nodes based on their relationship to other nodes.
For example, create a nodes.html file. add a text node to it, as well as comment and element nodes.
An element node
A text node.
The html element node is the parent. head and body are html child nodes. body contains three child nodes, and they are all at the same level - the type of the node does not affect the level of nesting.
Note: When working with DOM generated by HTML, padding source code HTML creates a lot of empty text nodes that won't be visible in the DevTools Elements tab. More about this at the link.
Node type definition
Each node in a document has a type, which is accessed through the nodeType property. The Mozilla Developer Network has an updated list of all node type constants. Below is a table of the most common node types.
In the Elements tab of the Developer Tools, you may notice that whenever you click and select any line in the DOM, the value == $0 appears next to it. This is a very convenient way to access the currently active element.
In the node.html console, click on the first element in the body (h1).
Using the console, find out the type of the selected node using the nodeType property.
$0.nodeType;
1
By selecting the h1 element, you will see 1 as the output, which refers to ELEMENT_NODE. Do the same with other nodes and they will return 3 and 8 respectively.
By knowing how to access an element, you can see the type of the node without highlighting the elements in the DOM.
document.body.nodeType;
1
In addition to nodeType, you can also use the nodeValue property to get the value of a text or comment node, and nodeName to get the element tag.
Changing the DOM with Events
So far, you've seen how to change the DOM in the console, and such changes are known to be temporary; every time the page is refreshed, all changes are lost. In you updated the background color of the page in the console. Try to combine what you've learned in this tutorial with what you already know to create an interactive button that changes the background color.
Go back to the index.html file and add a button element with an id. You also need to add a link to the new file in the new js directory js/scripts.js.
Document Object Model
An event in JavaScript is an action that the user performs. The user hovers over an element, clicks on it, or presses a certain key on the keyboard - these are all events. In this particular case, the button needs to perform an action when the user clicks on it. To do this, you need to add an event listener. Create a scripts.js file and save it in a new js directory. You need to define a button element in the file and assign it to a variable.
Using the addEventListener() method, the button will listen for clicks and execute its function after the click.
...
button.addEventListener("click", () => (
// action will go here
});
Inside the function, you need to place the code from the previous manual to change the background color to fuchsia.
...
This is what the script looks like:
let button = document.getElementById("changeBackground");
button.addEventListener("click", () => (
document.body.style.backgroundColor = "fuchsia";
});
Save and close the file. Refresh the index.html page in the browser. Press new button, and the background color of the page will change.
Tags: ,When opening any HTML document the browser first parses its content and, based on this parsing, creates the HTML Document Object Model or shorter DOM.
The DOM is made up of hierarchically nested objects called knots. Each node in the structure represents an HTML element located on the page.
Using the DOM you can interact ( read, modify, delete) with the content of HTML documents from scripts.
Below is the HTML code of the document and the DOM that would be created by the browser based on this code:
HTML DOM.
Hi all.
All the rectangles shown in the picture are objects (or nodes). The nodes of different type.
The Document node is marked in red. Any call to the DOM must begin with a call to this node.
Marked in green element nodes. For each HTML element on the page, the browser creates a corresponding element node.
The content of the elements is stored in text nodes. The text nodes are marked in blue in our diagram.
For everybody HTML attribute element is created attribute node. The attribute node is marked in pink in the diagram.
Note: don't forget that text is always stored in text nodes, not a property of the element. Those. in order to access the content of an HTML element, you must access the property of its text node.
Relationships between nodes
Nodes in an object structure are related to each other. There are several special terms to describe relationships between nodes:
parent node ( parent node) - the parent node in relation to the considered object is the node in which the considered object is nested. On our scheme in relation to the nodes
and
is parent. For Node
Child nodes ( child node) - a descendant node in relation to the considered object is a node that is nested in the considered object. On our diagram in relation to the node
and
They are descendants. For Node
descendant isSibling nodes ( sibling node) - nodes that are at the same nesting level with respect to their parent node. In our diagram, the sibling nodes are
The topmost node in the DOM is called root. In our diagram, the root is (because the document object is not part of the DOM).
This section provides a brief introduction to the Document Object Model (DOM) - what is the DOM, how are HTML structures and XML documents and how to interact with them. This section contains background information and examples.
What is the Document Object Model (DOM)?
The Document Object Model (DOM) is software interface(API) for HTML and XML documents. The DOM provides a structured representation of a document and defines how that structure can be accessed from programs that can change the document's content, style, and structure. A DOM representation consists of a structured group of nodes and objects that have properties and methods. Essentially, the DOM connects a web page to scripting languages or programming languages.
A web page is a document. The document can be presented both in the browser window and in the HTML code itself. Either way, it's the same document. The DOM provides another way to represent, store, and manage this document. The DOM fully supports the object-oriented representation of a web page, making it possible to change it using a scripting language like JavaScript.
How is the DOM accessible?
You don't have to do anything special to work with the DOM. Various browsers have different DOM implementations, these implementations show varying degrees of compliance with the actual DOM standard (this is a topic we have tried not to cover in this documentation), but each browser uses its own DOM to make web pages accessible to scripting languages.
When creating a script using an element