Gift Guide

JavaScript & DHTML Cookbook: Solutions and Examples for Web Programmers


In today's Web 2.0 world, JavaScript and Dynamic HTML are at the center of the hot new approach to designing highly interactive pages on the client side. With this environment in mind, the new edition of this book offers bite-sized solutions to very specific scripting problems that web developers commonly face. Each recipe includes a focused piece of code that you can insert right into your application.

Why is JavaScript & DHTML Cookbook so popular? After reading thousands ...

See more details below
Other sellers (Paperback)
  • All (33) from $1.99   
  • New (13) from $8.51   
  • Used (20) from $1.99   
JavaScript & DHTML Cookbook

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
  • NOOK for Web

Want a NOOK? Explore Now

NOOK Book (eBook)
$19.99 price
(Save 44%)$35.99 List Price


In today's Web 2.0 world, JavaScript and Dynamic HTML are at the center of the hot new approach to designing highly interactive pages on the client side. With this environment in mind, the new edition of this book offers bite-sized solutions to very specific scripting problems that web developers commonly face. Each recipe includes a focused piece of code that you can insert right into your application.

Why is JavaScript & DHTML Cookbook so popular? After reading thousands of forum threads over the years, author and scripting pioneer Danny Goodman has compiled a list of problems that frequently vex scripters of various experience levels. For every problem he addresses, Goodman not only offers code, but a discussion of how and why the solution works. Recipes range from simple tasks, such as manipulating strings and validating dates in JavaScript, to entire libraries that demonstrate complex tasks, such as cross-browser positioning of HTML elements, sorting tables, and implementing Ajax features on the client.

Ideal for novices as well as experienced scripters, this book contains more than 150 recipes for:

  • Working with interactive forms and style sheets
  • Presenting user-friendly page navigation
  • Creating dynamic content via Document Object Model scripting
  • Producing visual effects for stationary content
  • Positioning HTML elements
  • Working with XML data in the browser
Recipes in this Cookbook are compatible with the latest W3C standards and browsers, including Internet Explorer 7, Firefox 2, Safari, and Opera 9. Several new recipes provide client-side Ajax solutions, and many recipes from the previous edition have been revised to help you build extensible user interfaces for Web 2.0 applications. If you want to write your own scripts and understand how they work, rather than rely on a commercial web development framework, the JavaScript & DHTML Cookbook is a must.
Read More Show Less

Product Details

  • ISBN-13: 9780596514082
  • Publisher: O'Reilly Media, Incorporated
  • Publication date: 8/15/2007
  • Edition description: Second Edition
  • Edition number: 2
  • Pages: 606
  • Product dimensions: 7.00 (w) x 9.19 (h) x 1.11 (d)

Meet the Author

Danny Goodman has been writing about personal computers and consumer electronics since the late 1970s. In 2006, he celebrated 25 years as a freelance writer and programmer, having published hundreds of magazine articles, several commercial software products, and three dozen computer books. Through the years, his most popular book titles - on HyperCard, AppleScript, JavaScript, and Dynamic HTML - have covered programming environments that are both accessible to non-professionals, yet powerful enough to engage experts. His Dynamic HTML: The Definitive Reference, now in its third edition, is an O'Reilly bestseller.To keep up to date on the needs of web developers for his recent books, Danny is also a programming consultant to some of the industry's top intranet development groups and corporations. His expertise in implementing sensible cross-browser client-side scripting solutions is in high demand and allows him to, in his words, "get code under my fingernails while solving real-world problems."

Danny was born in Chicago, Illinois during the Truman Administration. He earned a B.A. and M.A. in Classical Antiquity from the University of Wisconsin, Madison. He moved to California in 1983 and lives in a small San Francisco area coastal community, where he alternates views between computer screens and the Pacific Ocean.

Read More Show Less

Table of Contents

About You;
About the Recipes;
What's in This Book;
Browser Platforms;
Conventions Used in This Book;
Using Code Examples;
Request for Comments;
SafariĀ® Enabled;
Chapter 1: Strings;
1.0 Introduction;
1.1 Concatenating (Joining) Strings;
1.2 Improving String Handling Performance;
1.3 Accessing Substrings;
1.4 Changing String Case;
1.5 Testing Equality of Two Strings;
1.6 Testing String Containment Without Regular Expressions;
1.7 Testing String Containment with Regular Expressions;
1.8 Searching and Replacing Substrings;
1.9 Using Special and Escaped Characters;
1.10 Reading and Writing Strings for Cookies;
1.11 Converting Between Unicode Values and String Characters;
1.12 Encoding and Decoding URL Strings;
1.13 Encoding and Decoding Base64 Strings;
Chapter 2: Numbers and Dates;
2.0 Introduction;
2.1 Converting Between Numbers and Strings;
2.2 Testing a Number's Validity;
2.3 Testing Numeric Equality;
2.4 Rounding Floating-Point Numbers;
2.5 Formatting Numbers for Text Display;
2.6 Converting Between Decimal and Hexadecimal Numbers;
2.7 Generating Pseudorandom Numbers;
2.8 Calculating Trigonometric Functions;
2.9 Creating a Date Object;
2.10 Calculating a Previous or Future Date;
2.11 Calculating the Number of Days Between Two Dates;
2.12 Validating a Date;
Chapter 3: Arrays and Objects;
3.0 Introduction;
3.1 Creating a Simple Array;
3.2 Creating a Multidimensional Array;
3.3 Converting Between Arrays and Strings;
3.4 Doing Something with the Items in an Array;
3.5 Sorting a Simple Array;
3.6 Combining Arrays;
3.7 Dividing Arrays;
3.8 Creating a Custom Object;
3.9 Simulating a Hash Table for Fast Array Lookup;
3.10 Doing Something with a Property of an Object;
3.11 Sorting an Array of Objects;
3.12 Customizing an Object's Prototype;
3.13 Converting Arrays and Custom Objects to Strings;
3.14 Using Objects to Reduce Naming Conflicts;
Chapter 4: Variables, Functions, and Flow Control;
4.0 Introduction;
4.1 Creating a JavaScript Variable;
4.2 Creating a Named Function;
4.3 Nesting Named Functions;
4.4 Creating an Anonymous Function;
4.5 Delaying a Function Call;
4.6 Branching Execution Based on Conditions;
4.7 Handling Script Errors Gracefully;
4.8 Improving Script Performance;
Chapter 5: Browser Feature Detection;
5.0 Introduction;
5.1 Detecting the Browser Brand;
5.2 Detecting an Early Browser Version;
5.3 Detecting the Internet Explorer Version;
5.4 Detecting the Mozilla Version;
5.5 Detecting the Safari Version;
5.6 Detecting the Opera Version;
5.7 Detecting the Client Operating System;
5.8 Detecting Object Support;
5.9 Detecting Object Property and Method Support;
5.10 Detecting W3C DOM Standard Support;
5.11 Detecting the Browser Written Language;
5.12 Detecting Cookie Availability;
5.13 Defining Browser- or Feature-Specific Links;
5.14 Testing on Multiple Browser Versions;
Chapter 6: Managing Browser Windows;
6.0 Introduction;
6.1 Living with Browser Window Control Limitations;
6.2 Setting the Main Window's Size;
6.3 Positioning the Main Window;
6.4 Maximizing the Main Window;
6.5 Creating a New Window;
6.6 Bringing a Window to the Front;
6.7 Communicating with a New Window;
6.8 Communicating Back to the Main Window;
6.9 Using Internet Explorer Modal/Modeless Windows;
6.10 Simulating a Cross-Browser Modal Dialog Window;
6.11 Simulating a Window with Layers;
Chapter 7: Managing Multiple Frames;
7.0 Introduction;
7.1 Creating a Blank Frame in a New Frameset;
7.2 Changing the Content of One Frame from Another;
7.3 Changing the Content of Multiple Frames at Once;
7.4 Replacing a Frameset with a Single Page;
7.5 Avoiding Being "Framed" by Another Site;
7.6 Ensuring a Page Loads in Its Frameset;
7.7 Reading a Frame's Dimensions;
7.8 Resizing Frames;
7.9 Setting Frameset Specifications Dynamically;
Chapter 8: Dynamic Forms;
8.0 Introduction;
8.1 Auto-Focusing the First Text Field;
8.2 Performing Common Text Field Validations;
8.3 Preventing Form Submission upon Validation Failure;
8.4 Auto-Focusing an Invalid Text Field Entry;
8.5 Using a Custom Validation Object;
8.6 Changing a Form's Action;
8.7 Blocking Submissions from the Enter Key;
8.8 Advancing Text Field Focus with the Enter Key;
8.9 Submitting a Form by an Enter Key Press in Any Text Box;
8.10 Disabling Form Controls;
8.11 Hiding and Showing Form Controls;
8.12 Allowing Only Numbers (or Letters) in a Text Box;
8.13 Auto-Tabbing for Fixed-Length Text Boxes;
8.14 Changing select Element Content;
8.15 Copying Form Data Between Pages;
Chapter 9: Managing Events;
9.0 Introduction;
9.1 Equalizing the IE and W3C Event Models;
9.2 Initiating a Process After the Page Loads;
9.3 Appending Multiple Load Event Handlers;
9.4 Determining the Coordinates of a Click Event;
9.5 Preventing an Event from Performing Its Default Behavior;
9.6 Blocking Duplicate Clicks;
9.7 Determining Which Element Received an Event;
9.8 Determining Which Mouse Button Was Pressed;
9.9 Reading Which Character Key Was Typed;
9.10 Reading Which Noncharacter Key Was Pressed;
9.11 Determining Which Modifier Keys Were Pressed During an Event;
9.12 Determining the Element the Cursor Rolled From/To;
9.13 Synchronizing Sounds to Events;
Chapter 10: Page Navigation Techniques;
10.0 Introduction;
10.1 Loading a New Page or Anchor;
10.2 Keeping a Page Out of the Browser History;
10.3 Using a select Element for Navigation;
10.4 Passing Data Between Pages via Cookies;
10.5 Passing Data Between Pages via Frames;
10.6 Passing Data Between Pages via URLs;
10.7 Creating a Contextual (Right-Click) Menu;
10.8 Creating Drop-Down Navigation Menus;
10.9 Providing Navigation Trail Menus;
10.10 Creating Expandable Menus;
10.11 Creating Collapsible XML Menus;
Chapter 11: Managing Style Sheets;
11.0 Introduction;
11.1 Assigning Style Sheet Rules to an Element Globally;
11.2 Assigning Style Sheet Rules to a Subgroup of Elements;
11.3 Assigning Style Sheet Rules to an Individual Element;
11.4 Importing External Style Sheets;
11.5 Importing Browser-or Operating System-Specific Style Sheets;
11.6 Changing Imported Style Sheets After Loading;
11.7 Enabling/Disabling Style Sheets;
11.8 Toggling Between Style Sheets for an Element;
11.9 Overriding a Style Sheet Rule;
11.10 Turning Arbitrary Content into a Styled Element;
11.11 Creating Center-Aligned Body Elements;
11.12 Reading Effective Style Sheet Property Values;
11.13 Forcing Recent Browsers into Standards-Compatibility Mode;
Chapter 12: Visual Effects for Stationary Content;
12.0 Introduction;
12.1 Precaching Images;
12.2 Swapping Images (Rollovers);
12.3 Reducing Rollover Image Downloads with JavaScript;
12.4 Reducing Rollover Image Downloads with CSS;
12.5 Dynamically Changing Image Sizes;
12.6 Changing Text Style Properties;
12.7 Offering Body Text Size Choices to Users;
12.8 Creating Custom Link Styles;
12.9 Changing Page Background Colors and Images;
12.10 Hiding and Showing Elements;
12.11 Adjusting Element Transparency;
12.12 Creating Transition Visual Effects;
12.13 Drawing Charts in the Canvas Element;
Chapter 13: Positioning HTML Elements;
13.0 Introduction;
13.1 Making an Element Positionable in the Document Space;
13.2 Connecting a Positioned Element to a Body Element;
13.3 Controlling Positioning via a DHTML JavaScript Library;
13.4 Deciding Between div and span Containers;
13.5 Adjusting Positioned Element Stacking Order (Z-order);
13.6 Centering an Element on Top of Another Element;
13.7 Centering an Element in a Window or Frame;
13.8 Determining the Location of a Nonpositioned Element;
13.9 Animating Straight-Line Element Paths;
13.10 Animating Circular Element Paths;
13.11 Creating a Draggable Element;
13.12 Scrolling div Content;
13.13 Creating a Custom Scrollbar;
13.14 Creating a Slider Control;
Chapter 14: Creating Dynamic Content;
14.0 Introduction;
14.1 Writing Dynamic Content During Page Loading;
14.2 Creating New Page Content Dynamically;
14.3 Including External HTML Content;
14.4 Embedding XML Data;
14.5 Embedding Data As JavaScript Objects;
14.6 Transforming XML Data into HTML Tables;
14.7 Transforming JavaScript Objects into HTML Tables;
14.8 Converting an XML Node Tree to JavaScript Objects;
14.9 Creating a New HTML Element;
14.10 Creating Text Content for a New Element;
14.11 Creating Mixed Element and Text Nodes;
14.12 Inserting and Populating an iframe Element;
14.13 Getting a Reference to an HTML Element Object;
14.14 Referencing All Elements of the Same Class;
14.15 Replacing Portions of Body Content;
14.16 Removing Body Content;
14.17 Using XMLHttpRequest for a REST Request;
14.18 Using XMLHttpRequest for a SOAP Call;
14.19 Sorting Dynamic Tables;
14.20 Walking the Document Node Tree;
14.21 Capturing Document Content;
Chapter 15: Dynamic Content Applications;
15.0 Introduction;
15.1 Displaying a Random Aphorism;
15.2 Converting a User Selection into an Arbitrary Element;
15.3 Automating the Search-and-Replace of Body Content;
15.4 Designing a User-Editable Content Page;
15.5 Creating a Slide Show;
15.6 Auto-Scrolling the Page;
15.7 Greeting Users with Their Time of Day;
15.8 Displaying the Number of Days Before Christmas;
15.9 Displaying a Countdown Timer;
15.10 Creating a Calendar Date Picker;
15.11 Displaying an Animated Progress Bar;
Appendix A: Keyboard Event Character Values;
Appendix B: Keyboard Key Code Values;
Appendix C: ECMAScript Reserved Keywords;

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)