The Document Object Model lets you access and manipulate the contents of Web pages using JavaScript. By using the DOM, you can do wonderful things like:

Create tabbed Web pages

Create expandable/collapsible (“accordion”-style) Web page elements

Generate Web page content dynamically (on the fly)

In this introductory article, you learn about the concept of the DOM, and how it’s used to access Web page elements from within JavaScript.

The DOM concept

From a JavaScript perspective, the Document Object Model uses JavaScript objects to represent the various parts that make up a Web page. For example, a whole Web page is represented by a Document object, while elements within the page — body , h1 , p , and so on — are represented by Element objects. The page elements are represented as a tree, with the Document object at the top.

Elements, attributes and text nodes

Every part of a Web page is represented in the DOM by a node . The most common nodes you’ll encounter are element nodes , attribute nodes , and text nodes . In addition, the whole document is represented by a document node . Consider the following HTML markup:

<h1 class="intro">Introducing the Widget Company</h1>

In the above example, the h1 element is a DOM Element node, the class attribute is a DOM Attribute node, and the Introducing the Widget Company text is a DOM Text node.

The DOM tree

A Web page is represented in the DOM as a tree of nodes. For example, here’s the markup for a simple XHTML page:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>My Web Page</title> </head> <body> <h1 class="intro">The Widget Company</h1> </body> </html>

The above Web page is represented in the DOM by the following tree:

Document | HTML ______________|______________ | | HEAD BODY | | TITLE H1 | | "My Web Page" "The Widget Company"

In this tree, Document is a DOM Document node, while HTML , HEAD , BODY , TITLE and H1 are all DOM Element nodes, and "My Web Page" and "The Widget Company" are DOM Text nodes.

The H1 element node has a DOM Attribute node associated with it, which has a name of "class" and a value of "intro" .

The HTML element node also has three DOM Attribute nodes: "xmlns" , with value of "http://www.w3.org/1999/xhtml" ; "xml:lang" , with a value of "en" ; and "lang" , also with a value of "en" .

The DOM and JavaScript

You can access the various element, attribute and text nodes in a DOM document as JavaScript objects, allowing you to read and alter the contents of nodes, as well as add new nodes to the tree or remove nodes from the tree.

Over the coming series of tutorials, you’ll learn how to manipulate the DOM using JavaScript, and use your new-found knowledge to create powerful, dynamic Web pages.

To kick things off, in the next tutorial you learn how to use JavaScript to retrieve DOM elements in a Web page. Enjoy!