What is the Document Object Model?
The current DOM standard is at https://dom.spec.whatwg.org/. It is a complete specification for the DOM and supersedes all previous DOM specifications.
The legacy DOM2 specification http://www.w3.org/TR/DOM-Level-2-Core/introduction.htmlhttps://www.w3.org/TR/DOM-Level-2-Core/introduction.html described the DOM in the following terms:
The Document Object Model (DOM) is an application programming interface (API) for valid HTML and well-formed XML documents. It defines the logical structure of documents and the way a document is accessed and manipulated. [...] Nevertheless, XML presents this data as documents, and the DOM may be used to manage this data.
In other words, the DOM is not a string, but HTML/XML may represent the DOM as a string.
In the distant past, the DOM was limited in the kinds of elements that could be accessed. Form, link and image elements could be referenced with a hierarchical name that began with the root document object. A hierarchical name could make use of either the names or the sequential index of the traversed elements. For example, a form input element could be accessed as either document.formName.inputName
or document.forms[0].elements[0]
.
JavaScript vs. the DOM
JavaScript is a language that the browser reads and does stuff with. But the DOM is where that stuff happens.
When is the DOM different than the HTML?
Here's one possibility: there are mistakes in your HTML and the browser has fixed them for you. Let's say you have a <table>
element in your HTML and leave out the required <tbody>
element. The browser will just insert that <tbody>
for you. It will be there in the DOM, so you'll be able to find it with JavaScript and style it with CSS, even though it's not in your HTML.
DOM Living standard
Obsolete DOM specs
- DOM Level 1DOM Level 1
- DOM Level 2 CoreDOM Level 2 Core
- DOM Level 2 ViewsDOM Level 2 Views (Obsolete)
- DOM Level 2 EventsDOM Level 2 Events
- DOM Level 2 StyleDOM Level 2 Style
- DOM Level 2 Traversal and RangeDOM Level 2 Traversal and Range
- DOM Level 2 HTMLDOM Level 2 HTML
- DOM Level 3 CoreDOM Level 3 Core
- DOM Level 3 Load and SaveDOM Level 3 Load and Save
- DOM Level 3 ValidationDOM Level 3 Validation
- DOM Level 3 EventsDOM Level 3 Events
- DOM Level 3 XPathDOM Level 3 XPath
- DOM Level 4 CoreDOM Level 4 Core