Day 39 of #100daysofjs

innerHTML, outerHTML and other properties

console.dir()

console.dir() is a method that is used to display an interactive list of the properties of a specified JavaScript object. When we use console.dir() on a DOM element, it shows us all the properties and methods available for that element.

Consider the following HTML code:

<!DOCTYPE html>
<html>
<head>
    <title>Lesson 41</title>
</head>
<body>    Hello World    <span>Hey I am span</span>   
  <script src="script.js"></script>
</body>
</html>

If we log the span element using console.log(), like this:

console.log(document.getElementsByTagName('span')[0]);

We get the following output:

<span>Hey I am span</span>

However, if we use console.dir() instead of console.log(), like this:

console.dir(document.getElementsByTagName('span')[0]);

It will show the output as an object and we can easily see all the attributes and functions available for that element. Try it out and see the difference!

tagName and nodeName

tagName and nodeName are both properties of a DOM node. tagName exists only for element nodes, while nodeName is defined for all nodes (including element nodes, text nodes, and comment nodes).

innerHTML and outerHTML

innerHTML is a property of a DOM element that is used to get or set the HTML content inside an element as a string. For example, if we log first.innerHTML, where first is a reference to the span element in the previous example, it will show the output as:

console.log(first.innerHTML); // output: Hey I am span

We can also change the inner HTML of an element, like this:

first.innerHTML = "Hey I am changed"; // reload the page to see the change

outerHTML, on the other hand, is a property of a DOM element that is used to get or set the HTML content of an element as a string, including the original element itself. For example, if we log first.outerHTML, where first is a reference to the span element in the previous example, it will show the output as:

console.log(first.outerHTML); // output: <span>Hey I am span</span>

We can also change the outer HTML of an element, like this:

first.outerHTML = "<h1>Hey I am changed</h1>"; // reload the page to see the change

It's important to note that innerHTML is only valid for element nodes. For other node types (such as text and comment nodes), we can use nodeValue or data. For example:

first.outerHTML = "<div>Hey</div>";console.log(document.body.firstChild); // " Hello World "

Here, the firstChild of the body element is a text node that contains the original content "Hello World". But if we log document.body.firstChild.data, it will show the output as: "\n Hello world\n" The nodeValue property will also give the same result:

console.log(document.body.firstChild.nodeValue); // "\n  Hello world\n"

textContent

textContent is a property of a DOM element that is used to get or set the text content of an element as a string. For example, if we log first.textContent, where first is a reference to the span element in the previous example, it will show the output as:

console.log(first.textContent); // output: Hey I am span

We can also change the text content of an element, like this:

first.textContent = "Hey I am changed"; // reload the page to see the change

hidden

hidden is a property of a DOM element that is used to get or set the visibility of an element. It is a boolean property, so it can be either true or false. In the above HTML code that we used, we can set the hidden property of the span element to true, like this:

document.getElementsByTagName('span')[0].hidden = true;

Now, if we reload the page, we will see that the span element is no longer visible. We can also set the hidden property to false to make the element visible again.

Did you find this article valuable?

Support Arpan Mukherjee by becoming a sponsor. Any amount is appreciated!