scrupul0us -
I know you're well aware of this, but you can't really compare PHP and JavaScript. They're two different tools for two different purposes.
The DOM is really very simple. It's roughly comparable to a family tree. Every valid (X)HTML document can be represented as a hierarchical tree, with the <html> element at the root. Wherever one element (tag) is nested inside another (e.g., table rows nested inside a table, or a <strong> tag nested inside a <p>), the outermost element is said to be the "parent", and the innermost element is said to be the "child". Elements are also known as "nodes" of the DOM.
So the <html> element typically has two children: <head> and <body>. The <head>'s children, in turn, are usually <title>, <link>, <script>, and <meta> elements. And then the <body> has its own children—paragraphs, forms, tables—which have their own children, and so on.
Each node has a variety of properties, depending on what kind of element it is. These properties include the element's HTML attributes—value, action, method, class, style, and so forth—as well as numerous others which can't be represented directly in HTML.
Each node also has its own methods—which, again, vary depending on the type of element.
So every element (tag) in your document is represented by a node on the DOM, and every attribute is a property of its node. Essentially, the DOM (Document Object Model) is one giant object, which represents your HTML page.
JavaScript offers a wide variety of methods for finding your way around this tree ("walking" or "traversing" the DOM), and for inspecting and manipulating it (getting/setting the properties of a node, inserting/deleting nodes [e.g., table rows], and so forth.
The DOMs in modern browsers (Firefox and IE6/7, at least) are really quite standardized; once in a while, you'll run into a quirk, but the days of wildly divergent behavior in different browsers are pretty much behind us. Thank Ghod.