Home > Store

Learning JavaScript: A Hands-On Guide to the Fundamentals of Modern JavaScript

Register your product to gain access to bonus material or receive a coupon.

Learning JavaScript: A Hands-On Guide to the Fundamentals of Modern JavaScript

eBook (Watermarked)

  • Your Price: $21.75
  • List Price: $27.19
  • About Watermarked eBooks
  • This PDF will be accessible from your Account page after purchase and requires PDF reading software, such as Acrobat® Reader®.

    The eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.

    Watermarked eBook FAQ


  • Copyright 2013
  • Dimensions: 7" x 9"
  • Pages: 360
  • Edition: 1st
  • eBook (Watermarked)
  • ISBN-10: 0-13-301626-9
  • ISBN-13: 978-0-13-301626-0

Get Started Fast with  Modern JavaScript Web Development!

With the arrival of HTML5, jQuery, and Ajax, JavaScript web development skills are more valuable  than ever! This complete, hands-on JavaScript tutorial covers everything you need to know now.  Using line-by-line code walkthroughs and end-of-chapter exercises, top web developer and speaker Tim Wright will help you get results fast, even if you’ve never written a line of JavaScript before.

Smart, friendly, enthusiastic, and packed with modern examples, Learning JavaScript covers both design-level and development-level JavaScript. You’ll find expert knowledge and best practices for everything from jQuery and interface design to code organization and front-end templating. Wright’s focused coverage includes regular break points and clear reviews that make modern JavaScript easier to learn—and easier to use!

Learning JavaScript is your fastest route  to success with JavaScript—whether you’re entirely new to the language or you need to  sharpen and upgrade skills you first learned  a decade ago!

Coverage includes

• Mastering all of the JavaScript concepts and terminology you need to write new programs  or efficiently modify existing code

• Creating robust, secure code for both the design and development levels

• Maximizing usability, reusability, accessibility, clarity, security, and performance

• Taking full advantage of the browser environments your code will run in

• Accessing the DOM to create behaviors and data interactions

• Storing data for easy and efficient access

• Using variables, functions, loops, and other core language features

• Interacting with users through events

• Communicating with servers through Ajax

• Improving your productivity with JavaScript libraries

Sample Content

Table of Contents

I>Chapter 1: Progressive Enhancement 3
Defining Progressive Enhancement 3

History 4

Purpose 5

Accessibility 5

Reusability 5

Progressive Enhancement Versus Graceful

Degradation 6

Structure Layer 6

Adding More Meaning with HTML5 8

Presentation Layer 9

Inline CSS 10

Linking Up Your Stylesheet 10

Behavior Layer 12

Inline JavaScript 12

Embedded JavaScript 13

External and Unobtrusive JavaScript 15

Benefits of Progressive Enhancement 16

Performance 17

Building for the Future 17

The Touch Interface 18

Final Words on Progressive Enhancement 19

Summary 20

Exercises 20

Chapter 2: JavaScript in the Browser 21

A People’s History of JavaScript 21

Origins 22

Progressive Enhancement 23

The Behavior Layer 24

Moving Past Today 24

Browser Interactions with JavaScript 25

HTTP Requests 26

JavaScript and Rendering Engines 29

What JavaScript Can Do 30

Modifying HTML 31

Communicating with the Server 31

Storing Data 31

How You Should Use JavaScript 32

Improving User Experience 32

Using JavaScript Responsibly 32

Creating Fallbacks 34

Tools to Help You Use JavaScript 36

Tools Built into the Language 36

Tools Built into the Browser 37

Summary 38

Exercises 38

Chapter 3: JavaScript Terminology 39

Basics 39

Document Object Model (DOM) 39

Parents 40

Children 40

Siblings 41

Variables 41

Strings 43

Comments 43

Operators 44

Use Strict 45

Storage 45

Cache 45

Arrays 45

Cookies 46

JavaScript Object Notation (JSON) 46

Objects 47

Creating Interaction 47

Loops 48

Conditionals 48

switch Statement 49

Functions 50

Anonymous Functions 51

Callback Functions 52

Methods 53

Events 54

Ajax 54

Summary 55

Exercises 55

Chapter 4: Accessing the DOM 57

What Is the DOM? 57

The DOM Tree 58

Element Nodes 59

Text Nodes 60

Attribute Nodes 62

Working with the Element Node 62

Targeting by ID 63

Targeting by Tag Name 64

Targeting by Class 67

Using CSS Selectors in JavaScript to Target Nodes 68

Working with the Attribute Node 70

Getting an Attribute 71

Setting an Attribute 72

Removing an Attribute 73

Working with the Text Node and Changing Content 73

Moving Around the DOM 74

Accessing First and Last Child 76

Dynamically Adding and Removing Nodes from the

DOM 77

Adding Elements to the DOM 77

Removing Elements from the DOM 78

Summary 79

Exercises 79

Chapter 5: Storing Data in JavaScript 81

Variables 81

Strings 82

Numbers 83

Boolean 84

Performance in Variables 84

Arrays 85

Basic Array 85

Associative Array 87

Multidimensional Array 87

Pushing Data into an Array 89

Working with Array Methods 89

join 90

slice 90

shift and unshift 91

pop 92

concat 92

sort 93

Objects 93

Performance in Objects 94


Benefits of Using JSON 96

Using an API 96

Web Storage in HTML5 97

localStorage and sessionStorage 97

setItem 97

getItem 98

removeItem 98

Storing Chunks of Data with JSON 99

Using Web Storage Responsibly 100

Summary 101

Exercises 101

Chapter 6: Variables, Functions, and Loops 103

Defining Variables 103

Grouping Variables 104

Reserved Terms 104

Functions 105

Basic Functions 106

Anonymous Functions 107

Scope 108

Calling a Function with a Function 109

Returning Data 110

A Function as a Method 112

Loops 113

for Loop 114

Conditionals 116

if Statement 116

if/else Statement 117

switch Statement 118

if versus switch 119

Putting It All Together 120

Summary 121

Exercises 122

Chapter 7: Interacting with the User Through Events 123

Attaching an Event 124

Event Handlers 124

Event Listeners 125

Binding Events 128

Unbinding Events 129

Mouse and Keyboard Events 130

click 132

focus and blur 134

Accessibility 135

change 135

mouseover and mouseout (hovering) 136

submit 137

Preventing Default Behavior 139

keydown, keypress, and keyup 139

Putting It All Together 140

Touch and Orientation Events 143

touchstart and touchend 144

touchmove 145

orientationchange 145

Support for Touch Events 146

Putting It All Together 147

Summary 148

Exercises 148

Chapter 8: Communicating with the Server Through

Ajax 149

Ajax History 150

Server Communication 151

The XMLHttpRequest 152

Creating an Ajax Call 154

Sending a Request to the Server 155

Receiving Data Back from the Server 158

Making Repeat Ajax Calls 163

Ajax Data Formats 164

XML 165

HTML 166

JSON 167

Ajax Accessibility 168

Live Regions and ARIA 169

Common Ajax Mistakes 170

Providing Feedback 170

Putting It All Together 172

Where Is Ajax Going? 177

Summary 177

Exercises 178

Chapter 9: Code Organization 179

General Coding Style Rules 180

Scope 181

Failing Quickly 183

User Experience 185

Code Design 185

Files and Directories 186

In-document Script 187

Variable Declarations 188

Variable and Function Naming 189

Comments 190

Indentation 192

Whitespace 193

Statement Spacing 194

Line Breaks 195

Math and Operators 196

Using eval() 197

Taking Style Guides Too Far 199

Code Structure 200

Functions 200

Anonymous Functions 201

Functions as Variables 202

Functions as Methods 202

JavaScript Development Patterns 204

Summary 208

Exercises 209

Chapter 10: Making JavaScript Easier with Libraries 211

JavaScript Library Basics 212

The Library Learning Process 213

Syntax 214

Focusing on the Goal 214

Creating Shortcuts 215

Fixing Browser Issues 216

Popular Libraries 216

jQuery Basics 221

document.ready 222

Selectors 223

Traveling Through the DOM 225

Adding Style Information 226

Binding Events 227

Animation 227

jQuery Nonbasics 228

Using Ajax in jQuery 228

Looping Through Data in jQuery 230

Chaining Functions 232

Extending Libraries Through Plug-ins 233

Building a Plug-in 234

The Good of Libraries 236

Popularity and Community 236

Efficient Code 237

The Bad of Libraries 238

Overhead 238

Performance 239

Overreliance and Shelf Life 239

Using Microlibraries 240

The Good 240

The Bad 241

Summary 242

Exercises 242

Chapter 11: HTML5 JavaScript APIs 243

What Is HTML5? 244

The Markup (aka HTML) 244

Creating Better Semantics 245

Building More Accessible Content 245

The JavaScript APIs 248

The navigator Object 248

Geolocation 249

Audio and Video 251

History API 254

Web Workers 259

Device API 265

The Battery Status API 266

The Vibration API 267

The Network Information API 268

Using This Today with Feature Detection 270

Summary 271

Exercises 272

Chapter 12: Moving Forward with JavaScript 273

A Brief Review of Key Topics 274

Progressive Enhancement 274

DOM Manipulation 275

Data Storage 277

Server Communication 279

JavaScript for Designers 279

Advanced Interface Design 280

CSS Transforms in JavaScript 284

Interacting from the Desktop 289

JavaScript for Developers 293

JavaScript Templates 294

JavaScript on the Server with NodeJS 299

Summary 302

Exercises 303

Answers 305

Index 309


Submit Errata

More Information

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information

To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.


Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.


If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information

Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.


This site is not directed to children under the age of 13.


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information

If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information

Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents

California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure

Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact

Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice

We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020