Gift Guide

DOM Enlightenment


With DOM Enlightenment, you’ll learn how to manipulate HTML more efficiently by scripting the Document Object Model (DOM) without a DOM library. Using code examples in cookbook style, author Cody Lindley (jQuery Cookbook) walks you through modern DOM concepts to demonstrate how various node objects work.

Over the past decade, developers have buried the DOM under frameworks that simplify its use. This book brings these tools back into focus, using concepts and code native to ...

See more details below
Other sellers (Paperback)
  • All (11) from $5.99   
  • New (8) from $8.21   
  • Used (3) from $5.99   
DOM Enlightenment

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac

Want a NOOK? Explore Now

NOOK Book (eBook)
$8.49 price
(Save 15%)$9.99 List Price


With DOM Enlightenment, you’ll learn how to manipulate HTML more efficiently by scripting the Document Object Model (DOM) without a DOM library. Using code examples in cookbook style, author Cody Lindley (jQuery Cookbook) walks you through modern DOM concepts to demonstrate how various node objects work.

Over the past decade, developers have buried the DOM under frameworks that simplify its use. This book brings these tools back into focus, using concepts and code native to modern browsers. If you have JavaScript experience, you’ll understand the role jQuery plays in DOM scripting, and learn how to use the DOM directly in applications for mobile devices and specific browsers that require low overhead.

  • Understand JavaScript node objects and their relationship to the DOM
  • Learn the properties and methods of document, element, text, and DocumentFragment objects
  • Delve into element node selecting, geometry, and inline styles
  • Add CSS style sheets to an HTML document and use CSSStyleRule objects
  • Set up DOM events by using different code patterns
  • Learn the author’s vision for dom.js, a jQuery-inspired DOM Library for modern browsers
Read More Show Less

Product Details

  • ISBN-13: 9781449342845
  • Publisher: O'Reilly Media, Incorporated
  • Publication date: 2/28/2013
  • Edition number: 1
  • Pages: 180
  • Sales rank: 506,245
  • Product dimensions: 6.90 (w) x 9.10 (h) x 0.70 (d)

Meet the Author

Cody Lindley, editor of jQuery Cookbook, brings together over a dozen contributors, all of them key people in jQuery's ongoing development process. Each focuses on subjects they've worked with and often helped create.

Read More Show Less

Table of Contents

Who Should Read This Book;
Technical Intentions, Allowances, and Limitations;
This Book Is Not Like Other Programming Books;
Color-Coding Conventions;
Conventions Used in This Book;
Using Code Examples;
Safari® Books Online;
How to Contact Us;
Chapter 1: Node Overview;
1.1 1.1 The Document Object Model (a.k.a. the DOM) Is a Hierarchy/Tree of JavaScript Node Objects;
1.2 1.2 Node Object Types;
1.3 1.3 Subnode Objects Inherit From the Node Object;
1.4 1.4 Properties and Methods for Working with Nodes;
1.5 1.5 Identifying the Type and Name of a Node;
1.6 1.6 Getting a Node’s Value;
1.7 1.7 Using JavaScript Methods to Create Element and Text Nodes;
1.8 1.8 Using JavaScript Strings to Create and Add Element and Text Nodes to the DOM;
1.9 1.9 Extracting Parts of the DOM Tree as JavaScript Strings;
1.10 1.10 Using appendChild() and insertBefore() to Add Node Objects to the DOM;
1.11 1.11 Using removeChild() and replaceChild() to Remove and Replace Nodes;
1.12 1.12 Using cloneNode() to Clone Nodes;
1.13 1.13 Grokking Node Collections (i.e., NodeList and HTMLCollection);
1.14 1.14 Getting a List/Collection of All Immediate Child Nodes;
1.15 1.15 Converting a NodeList or HTMLCollection to a JavaScript Array;
1.16 1.16 Traversing Nodes in the DOM;
1.17 1.17 Verifying a Node Position in the DOM Tree with contains() and compareDocumentPosition();
1.18 1.18 Determining Whether Two Nodes Are Identical;
Chapter 2: Document Nodes;
2.1 2.1 document Node Overview;
2.2 2.2 HTMLDocument Properties and Methods (Including Inherited);
2.3 2.3 Getting General HTML Document Information (title, url, referrer, lastModified, and compatMode);
2.4 2.4 document Child Nodes;
2.5 2.5 document Provides Shortcuts to , , , and ;
2.6 2.6 Using document.implementation.hasFeature() to Detect DOM Specifications/Features;
2.7 2.7 Getting a Reference to the Focus/Active Node in the Document;
2.8 2.8 Determining Whether the Document or Any Node Inside the Document Has Focus;
2.9 2.9 document.defaultView Is a Shortcut to the Head/Global Object;
2.10 2.10 Using ownerDocument to Get a Reference to the Document from an Element;
Chapter 3: Element Nodes;
3.1 3.1 HTML*Element Object Overview;
3.2 3.2 HTML*Element Object Properties and Methods (Including Inherited);
3.3 3.3 Creating Elements;
3.4 3.4 Getting the Tag Name of an Element;
3.5 3.5 Getting a List/Collection of Element Attributes and Values;
3.6 3.6 Getting, Setting, and Removing an Element’s Attribute Value;
3.7 3.7 Verifying Whether an Element Has a Specific Attribute;
3.8 3.8 Getting a List of Class Attribute Values;
3.9 3.9 Adding and Removing Subvalues to a Class Attribute;
3.10 3.10 Toggling a Class Attribute Value;
3.11 3.11 Determining Whether a Class Attribute Value Contains a Specific Value;
3.12 3.12 Getting and Setting data-* Attributes;
Chapter 4: Element Node Selection;
4.1 4.1 Selecting a Specific Element Node;
4.2 4.2 Selecting/Creating a List (a.k.a. NodeList) of Element Nodes;
4.3 4.3 Selecting All Immediate Child Element Nodes;
4.4 4.4 Selecting Contextual Elements;
4.5 4.5 Preconfigured Selections/Lists of Element Nodes;
4.6 4.6 Using matchesSelector() to Verify That an Element Will Be Selected;
Chapter 5: Element Node Geometry and Scrolling Geometry;
5.1 5.1 Element Node Size, Offsets, and Scrolling Overview;
5.2 5.2 Getting an Element’s offsetTop and offsetLeft Values Relative to the offsetParent;
5.3 5.3 Using getBoundingClientRect() to Get an Element’s Top, Right, Bottom, and Left Border Edge Offsets Relative to the Viewport;
5.4 5.4 Getting an Element’s Size (Border + Padding + Content) in the Viewport;
5.5 5.5 Getting an Element’s Size (Padding + Content) in the Viewport, Excluding Borders;
5.6 5.6 Using elementFromPoint() to Get the Topmost Element in the Viewport at a Specific Point;
5.7 5.7 Using scrollHeight and scrollWidth to Get the Size of the Element Being Scrolled;
5.8 5.8 Using scrollTop and scrollLeft to Get and Set Pixels Scrolled from the Top and Left;
5.9 5.9 Using scrollIntoView() to Scroll an Element into View;
Chapter 6: Element Node Inline Styles;
6.1 6.1 Style Attribute (a.k.a. Element Inline CSS Properties) Overview;
6.2 6.2 Getting, Setting, and Removing Individual Inline CSS Properties;
6.3 6.3 Getting, Setting, and Removing All Inline CSS Properties;
6.4 6.4 Using getComputedStyle() to Get an Element’s Computed Styles (i.e., Actual Styles Including Any from the Cascade);
6.5 6.5 Using the class and id Attributes to Apply and Remove CSS Properties on an Element;
Chapter 7: Text Nodes;
7.1 7.1 Text Object Overview;
7.2 7.2 Text Object and Properties;
7.3 7.3 Whitespace Creates Text Nodes;
7.4 7.4 Creating and Injecting Text Nodes;
7.5 7.5 Getting a Text Node Value with .data or nodeValue;
7.6 7.6 Manipulating Text Nodes with appendData(), deleteData(), insertData(), replaceData(), and subStringData();
7.7 7.7 When Multiple Sibling Text Nodes Occur;
7.8 7.8 Using textContent to Remove Markup and Return All Child Text Nodes;
7.9 7.9 The Difference Between textContent and innerText;
7.10 7.10 Using normalize() to Combine Sibling Text Nodes into One Text Node;
7.11 7.11 Using splitText() to Split a Text Node;
Chapter 8: DocumentFragment Nodes;
8.1 8.1 DocumentFragment Object Overview;
8.2 8.2 Using createDocumentFragment() to Create DocumentFragments;
8.3 8.3 Adding a DocumentFragment to the Live DOM;
8.4 8.4 Using innerHTML on a Document Fragment;
8.5 8.5 Leaving Fragments Containing Nodes in Memory by Cloning;
Chapter 9: CSS Stylesheets and CSS Rules;
9.1 9.1 CSS Stylesheet Overview;
9.2 9.2 Accessing All Stylesheets (i.e., CSSStylesheet Objects) in the DOM;
9.3 9.3 CSSStyleSheet Properties and Methods;
9.4 9.4 CSSStyleRule Overview;
9.5 9.5 CSSStyleRule Properties and Methods;
9.6 9.6 Using cssRules to Get a List of CSS Rules in a Stylesheet;
9.7 9.7 Using insertRule() and deleteRule() to Insert and Delete CSS Rules in a Stylesheet;
9.8 9.8 Using the .style Property to Edit the Value of a CSSStyleRule;
9.9 9.9 Creating a New Inline CSS Stylesheet;
9.10 9.10 Programmatically Adding External Stylesheets to an HTML Document;
9.11 9.11 Using the .disabled Property to Disable/Enable Stylesheets;
Chapter 10: JavaScript in the DOM;
10.1 10.1 Inserting and Executing JavaScript Overview;
10.2 10.2 JavaScript Is Parsed Synchronously by Default;
10.3 10.3 Using defer to Defer the Downloading and Execution of External JavaScript;
10.4 10.4 Using async to Asynchronously Download and Execute External JavaScript Files;
10.5 10.5 Using Dynamic Elements to Force Asynchronous Downloading and Parsing of External JavaScript;
10.6 10.6 Using the onload Callback for Asynchronous s so That We Know When They’re Loaded;
10.7 10.7 Be Mindful of s Placement in HTML for DOM Manipulation;
10.8 10.8 Getting a List of s in the DOM;
Chapter 11: DOM Events;
11.1 11.1 DOM Events Overview;
11.2 11.2 DOM Event Types;
11.3 11.3 The Event Flow;
11.4 11.4 Adding Event Listeners to Element Nodes, the window Object, and the document Object;
11.5 11.5 Removing Event Listeners;
11.6 11.6 Getting Event Properties from the Event Object;
11.7 11.7 The Value of this When Using addEventListener();
11.8 11.8 Referencing the target of an Event and Not the Node or Object on Which the Event Is Invoked;
11.9 11.9 Using preventDefault() to Cancel Default Browser Events;
11.10 11.10 Using stopPropagation() to Stop the Event Flow;
11.11 11.11 Using stopImmediatePropagation() to Stop the Event Flow As Well As Other Like Events on the Same Target;
11.12 11.12 Custom Events;
11.13 11.13 Simulating/Triggering Mouse Events;
11.14 11.14 Event Delegation;
Chapter 12: Creating dom.js: A Wishful jQuery-Inspired DOM Library for Modern Browsers;
12.1 12.1 dom.js Overview;
12.2 12.2 Creating a Unique Scope;
12.3 12.3 Creating dom() and GetOrMakeDom(), Globally Exposing dom() and GetOrMakeDom.prototype;
12.4 12.4 Creating an Optional Context Parameter Passed to dom();
12.5 12.5 Populating an Object with DOM Node References Based on params and a Return Object;
12.6 12.6 Creating an each() Method and Making It a Chainable Method;
12.7 12.7 Creating html(), append(), and text() Methods;
12.8 12.8 Taking dom.js for a Spin;
12.9 12.9 Summary and Continuing with dom.js;

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)