Intro xxiii 1 the interactive web: Reacting to the Virtual World 1 2 storing data: Everything Has Its Place 33 3 exploring the client: Browser Spelunking 85 4 decision making: If There’s a Fork in the Road, Take It .. 135 5 looping: At the Risk of Repeating Myself 189 6 functions: Reduce, Reuse, Recycle 243 7 forms and validation: Getting the User to Tell All 289 8 wrangling the page: Slicing and Dicing HTML with the DOM 343 9 bringing data to life: Objects as Frankendata 393 10 creating custom objects: Having It Your Way with Custom Objects 449 11 kill bugs dead: Good Scripts Gone Wrong 485 12 dynamic data: Touchy-Feely Web Applications 537