Chapter 1. Introduction
JavaScript has had a bad reputation for years. Many developers consider writing in JavaScript a pain because the programs behave so unpredictably. Once done coding, they open another browser to test, only to be greeted with an unhelpful error message (Figure 1-1). Thus, developers often simply refuse to bother studying the language.

Figure 1-1. JavaScript errors gone wild
As it turns out, most of the problems have historically been (and let’s be honest, still are) due to browser differences in the implementation of DOM and BOM, and to a much smaller extent, the JavaScript language itself.
DOM stands for Document Object Model. It’s an API (application programming interface) for working with structured documents such as those written in XML, XHTML, and HTML. DOM is a language-independent API that also exists in PHP. In JavaScript, this API is easily spotted: anything that starts with document. has to do with the DOM. As a point of historical interest, DOM started in JavaScript and was later standardized by the World Wide Web Consortium (W3C) as an API independent of JavaScript or any other language. These days, you can still unearth remnants of that primordial DOM (now called DOM0)—things like document.images (all images on a page) and document.links (all links), which were replaced in DOM version 1 with more generic methods such as document.getElementById() ...