标题：JavaScript完全解析
作者简介
KevinYank是Web开发领域中著名的领军人物。在写书之前是SitePoint网站的技术总监，同时也是SitePointTechTimes时事通讯的主编。
CameronAdams是许多Web开发书籍的作者，是著名的“Web技术专家”，他不仅具有丰富的JavaScript经验，还对CSS、PHP和图形设计十分精通。
编辑推荐
《JavaScript完全解析》通过丰富多彩的示例，一步步地教你以正确的方式进行JavaScnpt编程。你将轻松学会使用JavaScript解决实际的问题、构建更精妙的表单、追踪用户事件（诸如点击鼠标和按键）、设计出精彩的动画等知识，还将学习使用DOM、Ajax等功能更强大的技术。学习JavaScript~置的函数、方法和属性；轻松掌握将JavaScript集成到网站中的方法：学习基于JavaScript的表单验证及用户交互方法：理解如何处理用户事件：创建使网站更有生命力的动画：学会基于DOM和Ajax的编程。
序言
从表面上看，JavaScript是一门简单的程序设计语言，它可以在浏览器显示网页的同时对网页进行实时修改。掌握它到底有多难呢？听起来好像是一个下午就可以解决的事情一样。
但是JavaScript的实质要比其表象复杂得多。如果你是Dr．Who的粉丝，那么就可能将JavaScript称为TARDIS式的程序设计语言’。如果不是，那么就像年轻的男女极客一样，目不转睛地跟着我一起来学习吧！
所有人都跟过来了吗？Jimmy，放下你手中的机器人Daleks吧。
正如前面所讲，JavaScript听起来应该是一门简单的程序设计语言。然而，在它10年的发展历程中，使用JavaScript的最佳方式似乎也随着时间的变化而变化；并且到处都可以看到关于如何编写优质JavaScript代码的建议，如“按照这种方式吧，它将运行得更快”、“用这段代码吧，它可以在更多的浏览器中正常运行”、“远离这个特性吧，它将引起内存泄漏”等。
有很多JavaScript书籍（其中一部分书籍的作者在业界非常受人尊敬）只教了一些解决简单问题的简单方法。于是到目前为止，当这些读者需要独自解决一个实际问题的时候，仍然会感觉到无从下手。当他们花费九牛二虎之力从网页上搜索到一个所需的实例时，却无法理解这些JavaScript代码的含义。这是因为读者所购买的书没有包含这门语言中多数真正有用的特征，如对象字面量（obiectliterals）、事件监听器（eventlisteners）以及闭包。
目录
第1章 Web的三层结构 1
1.1 页面分离 2
1.2 三层结构 3
1.2.1 用HTML设置内容 4
1.2.2 用CSS描述页面展现效果 6
1.2.3 用JavaScript实现行为 7
1.3 正确的方法 7
1.4 JavaScript程序库 8
1.5 让我们开始吧 9
第2章 JavaScript编程 10
2.1 运行JavaScript程序 10
2.2 语句：给浏览器看的最小程序块 13
2.3 注释：给程序员看的最小程序块 13
2.4 变量：为程序存储数据 14
2.5 条件和循环：控制程序流 23
2.5.1 条件：做出选择 24
2.5.2 循环：使重复代码最少化 29
2.6 函数：编写后续将使用的代码 33
2.6.1 参数：向函数传递数据 33
2.6.2 返回语句：函数的数据输出 35
2.6.3 作用域：保持变量相互独立 36
2.7 对象 37
2.8 实际应用中的低调脚本 39
2.9 小结 40
第3章 文档访问 41
3.1 文档对象模型：对HTML的映射 41
3.1.1 文本节点 43
3.1.2 属性节点 44
3.2 访问所需的节点 45
3.2.1 通过ID属性查找元素 45
3.2.2 通过标签名称查找元素 47
3.2.3 通过类名查找元素 50
3.2.4 遍历DOM树 53
3.2.5 操作元素属性 56
3.3 更改样式 57
3.4 实例：建立带底纹的表格 62
3.4.1 查找所有类名为dataTable的表格 63
3.4.2 获取每个表格的行 63
3.4.3 为偶数行添加类alt 65
3.4.4 合并全部代码 65
3.5 程序库简介 67
3.5.1 Prototype程序库 67
3.5.2 jQuery程序库 68
3.5.3 Dojo程序库 69
3.6 小结 70 
第4章 事件 71
4.1 重要的历史 71
4.2 事件句柄 72
4.2.1 默认操作 75
4.2.2 this关键字 76
4.2.3 事件句柄中存在的问题 78
4.3 事件监听器 79
4.3.1 默认行为 81
4.3.2 事件传送 83
4.3.3 this关键字 86
4.3.4 IE的内存泄漏问题 88
4.3.5 合并全部代码 88
4.4 实例：富提示条 90
4.4.1 静态页面 91
4.4.2 生成提示条 91
4.4.3 核心方法 93
4.4.4 动态样式 96
4.4.5 合并全部代码 97
4.5 实例：折叠菜单 98
4.5.1 静态页面 99
4.5.2 核心方法 100
4.5.3 动态样式 102
4.5.4 合并全部代码 103
4.6 程序库简介 109
4.7 小结 110
第5章 动画 111
5.1 动画原理 111
5.2 用JavaScript控制时间 112
5.2.1 在setTimeout函数中使用变量 115
5.2.2 停止计时器 117
5.2.3 建立重复计时器 118
5.2.4 停止重复计时器 119
5.3 再谈富提示条 119
5.4 用新风格实现老式动画 120
5.5 基于路径的运动 124
5.5.1 二维空间内的动画效果 130
5.5.2 创建更真实的运动效果 132
5.5.3 进一步学习 136
5.6 再谈折叠菜单 136
5.6.1 如何为折叠菜单添加动画效果 136
5.6.2 代码修改 137
5.7 程序库简介 143
5.8 小结 145
第6章 表单增强 146
6.1 HTML DOM扩展 147
6.1.1 实例：创建关联的表单域 148
6.1.2 实例：级联菜单 156
6.2 表单验证 165
6.2.1 截获表单提交 166
6.2.2 正则表达式 167
6.2.3 实例：可复用的验证脚本 171
6.3 自定义表单控件 175
6.4 程序库简介 186
6.4.1 表单验证 187
6.4.2 自定义控件 188
6.5 小结 189
第7章 错误和调试 190
7.1 什么也没有发生 191
7.2 常见错误 195
7.2.1 语法错误 195
7.2.2 运行错误 199
7.2.3 逻辑错误 201
7.3 用Firebug调试 204
7.4 小结 209
第8章 Ajax 210
8.1 XMLHttpRequest：处理小内容块 210
8.1.1 创建XMLHttpRequest对象 211
8.1.2 访问服务器 213
8.1.3 数据处理 216
8.2 关于屏幕阅读器 217
8.3 Ajax实战 218
8.4 基于Ajax的无缝表单提交 227
8.5 程序库简介 234
8.5.1 Prototype 235
8.5.2 Dojo 236
8.5.3 jQuery 236
8.5.4 YUI 237
8.5.5 MooTools 237
8.6 小结 238
第9章 展望 239
9.1 使Web变得更加丰富多彩 240
9.1.1 更简单的浏览方式 240
9.1.2 更好的视觉效果 241
9.1.3 独特的交互机制 242
9.2 富互联网应用 244
9.3 摆脱网页的JavaScript 247
9.4 程序库简介 248
9.4.1 Dojo 249
9.4.2 Google Web Toolkit 251
9.5 小结 251
附录A JavaScript核心程序库 253
A.1 对象 253
A.2 事件监听器方法 254
A.3 脚本启动 262
A.4 CSS类管理方法 264
A.5 获取派生的样式 265
A.6 完整的程序库 265