Intro
Who is this book for?
We know what you're thinking
Metacognition
Bend your brain into submission
Read me
The technical review team
Acknowledgments
1 the interactive web: Reacting to the Virtual World
(Online) people have needs
Like talking to a brick wall...nothing happens
ButJavaScript talks back
Lights, camera, interaction!
Use the tag to tell the browser you're writingJavaScript
Your web browser can handle HTML, CSS, AND JavaScript
Man's virtual best Friend... needs YOUR help
Making iRock interactive
Create the iRock web page
Test drive
JavaScript events: giving the iRock a voice
Alerting the user with a function
Add the iRock greeting
Now let's make the iRock really interactive
Interaction is TWO-way communication
Add a thnction to get the user's name
Instant replay: what just happened?
Test drive iRock 1.0
2 storing data: Everything Has Its Place
Your scripts can store data
Scripts think in data types
Constants stay the SAME, variables can CHANGE
Variables start out without a value
Initialize a variable with "="
Constants are resistant to change
What's in a name?
Legal and illegal variable and constant names
Variable names often use CamelCase
Plan the Duncan's Donuts web page
A first take at the donut calculations
Initialize your data...or else
NaN is NOT a number
You can add more than numbers
parselnt0 and parseFloat0 convert text to a number
Why are extra donuts being ordered?
Duncan discovers donut espionage
Use getElementByld0 to grab form data
Validate the web form's data
Strive for intuitive user input
3 exploring the client: Browser Spelunking
Lucky contestant, come on down!
"if" this is true... then do something
An if statement evaluates a condition...and then takes action
Use if to choose between two things
You can make multiple decisions with if
Adding an else to your if statement
Variables drive the story
But part of the story is missing
Compounding yourJavaScript efforts
Tiered decision making with if/else
An if can go inside another if
Your functions control your pages
Pseudocode lets you map out your adventure
Stick figure inequality
!= Psst, I've got nothing to tell you...
Crafting decisions with comparison operators
Comments, placeholders, and documentation
Comments in.JavaScript start with//
Scope and context: Where data lives
Check your adventure variable score
Where does my data live?
Choice of five
Nesting it/else can get complicated
Swimh statements have multiple cases
Inside the switch statement
A switchy stick figure adventure: test drive
4 decision making: If There’s a Fork in the Road, Take It
X marks the spot
Deja vu all over again...for loops
Treasure hunting with a for loop
Dissect the tbr loop
Mandango: a macho movie seat finder
First check seat availability
Looping, HTML, and seat availability
Movie seats as variables
Arrays collect multiple pieces of data
Array values are stored with keys
FromJavaSeript to HTML
Visualizing Mandango seats
Test drive: the solo seat finder
Too much of a good thing: endless loops
Loops always need an exit condition (or two!)
A "break" in the action
Boolean operator logic uncovered
Looping for,just a "while"... until a condition is met
Breaking down the while loop
Use the right loop for the job
Movie seat data modeling
An array of an array: two-dimensional arrays
Two keys to access 2-D array data
Mandango in 2-D
An entire theater of manly seats
5 looping: At the Risk of Repeating Myself
The mother of all problems
Functions as problem solvers
The nuts and bolts of a function
A function you've already met
Building a better thermostat
Passing information to fhnctions
Function arguments as data
Functions eliminate duplicate code
Creating a seat setter function
The setSeat0 thnction
The significance of feedback
Returning data from tunctions
Many happy return values
Getting the status of a seat
Showing the seat status
You can link the thnction to an image
Repetitive code is never a good thing
Separating functionality from content
Functions are just data
Calling or referencing your functions
Events, callbacks, and HTML attributes
Wiring events using function references
Function literals to the rescue
Where's the wiring?
A shell of an HTML page
6 functions: Reduce, Reuse, Recycle
The Bannerocity HTML form
When HTML is not enough
Accessing form data
Form fields follow a chain of events
Losing focus with onblur
Alert box validation
Validate fields to make sure you have "not nothing"
Validation without aggravating alert boxes
A more subtle non-empty validator
Size matters...
Validating the length of data
Validating a ZIP code
Validating a date
Regular expressions aren't "regular"
Regular expressions define patterns to match
Metacharacters represent more than one literal character
Drilling into regular expressions: quantifiers
Validating data with regular expressions
Matching mins and maxes
Eliminating three-digit years with this...or that
Leave nothing to chance
Can you hear me now? Phone number validation
You'ye got mail: validating email
The exception is the rule
Matching optional characters fi'om a set
Constructing an email validator
7 forms and validation: Getting the User to Tell All
8 wrangling the page: Slicing and Dicing HTML with the DOM
9 bringing data to life: Objects as Frankendata
10 creating custom objects: Having It Your Way with Custom Objects
11 kill bugs dead: Good Scripts Gone Wrong 485
12 dynamic data: Touchy-Feely Web Applications