第1章 JavaScript初步 1
1.1 JavaScript的定义 1
1.2 JavaScript的限制 2
1.3 avaScript的最佳实践 3
1.4 为没有JavaScript的用户着想(渐进增强) 4
1.5 内容和行为的隔离(谨慎地编码) 5
1.6 使用括号和分号结束符(一致的编码方式) 7
1.7 给页面添加脚本 9
1.7.1 用HTML注释框住代码 9
1.7.2 语言属性 10
1.8 让不同的脚本在同一页面中协同工作 10
1.9 隐藏JavaScript源代码 12
1.10 脚本调试 13
1.10.1 理解浏览器内建的错误报告 14
1.10.2 使用alert 15
1.10.3 使用try-catch 16
1.10.4 向页面和窗口中写入数据 17
1.10.5 使用外部调试器 17
1.11 严格的警告 18
1.12 小结 19
第2章 使用数字 20
2.1 JavaScript中的数学计算 20
2.2 将数字转化为拥有x位小数位的形式 22
2.3 创建受约束的随机数 23
2.4 将数字转换为字符串 24
2.5 格式化货币值 25
2.6 将字符串转换为数字 26
2.7 将数字转换为序数 28
2.8 小结 29
第3章 使用字符串 30
3.1 在字符串中包含特殊字符 30
3.2 处理字符串中的字符 31
3.3 对URL编码 32
3.4 比较字符串 32
3.5 查找字符串中的子串 34
3.6 将字符串拆分成子串 35
3.7 创建正则表达式 36
3.8 测试字符串和正则表达式的匹配 38
3.9 测试字符串是否只包含数字 39
3.10 测试字符串是否是有效的电话号码 40
3.11 测试字符串是否是有效的电子邮件地址 40
3.12 使用正则表达式搜索和替换文本 41
3.13 小结 42
第4章 使用数组 43
4.1 使用数组显式声明 43
4.2 创建数组的数组 44
4.3 使用字符串代替数字做数组索引 46
4.4 将数组转换为字符串 47
4.5 增加和删除数组中的成员 48
4.6 将数组按照字母顺序或者数字顺序排序 50
4.7 对多维数组排序 51
4.8 随机地排序一个数组 52
4.9 小结 52
第5章 导航文档对象模型 53
5.1 访问元素 54
5.2 创建元素节点和文本节点 58
5.3 改变元素的类型 61
5.4 删除一个元素节点或者文本节点 62
5.5 读写元素属性 63
5.6 获得拥有特定属性值的所有元素 65
5.7 元素的class的增减 67
5.8 小结 68
第6章 处理和验证表单 69
6.1 读写文本区的数据 69
6.2 读取和设置checkbox的状态 71
6.3 读写radio按钮的状态 72
6.4 读取和设置select box 74
6.5 验证强制性的文本区 75
6.6 验证数字 75
6.7 验证电子邮件地址 76
6.8 检查未选中的radio按钮 76
6.9 阻止不合法的表单被提交 77
6.10 验证数据项数目不详的表单 78
6.11 验证表单时打印内嵌错误信息 79
6.12 根据其他输入区域的值隐藏和显示某些表单输入区域 80
6.13 小结 83
第7章 窗口和Frame 84
7.1 使用弹出窗口 85
7.1.1 弹出窗口的问题 85
7.1.2 怎样减轻问题的恶劣影响 86
7.2 在新窗口中打开链接 88
7.3 Frame之间的通信 89
7.4 获取滚动位置 91
7.5 滚动页面到特定位置 93
7.6 获得视区的大小(窗口内可用的空间) 93
7.7 小结 94
第8章 cookie 95
8.1 写入cookie 95
8.2 读取cookie 96
8.3 设定cookie的过期时间 97
8.4 使cookie只能通过特定的域和路径访问 98
8.5 突破浏览器对cookie数目的限制 99
8.6 小结 100
第9章 日期和时间 101
9.1 获得日期和时间 101
9.2 自定义Date格式转换 103
9.3 将时间格式化成12小时记法和24小时记法 105
9.4 比较日期 106
9.5 格式化日期间的差异 109
9.6 小结 111
第10章 图片 112
10.1 图片的预装载 112
10.2 图片的切换 113
10.3 图片的随机显示 115
10.4 多个图片的幻灯片显示效果 117
10.5 图片的淡入淡出效果 119
10.6 基于图片的实时时钟的实现 123
10.7 进度条的实现 126
10.8 小结 128
第11章 检测浏览器 129
11.1 识别浏览器是否支持某些特性 129
11.2 识别特殊浏览器 131
11.3 检测Quirks模式和标准模式 134
11.4 小结 135
第12章 在JavaScript中使用CSS 136
12.1 改变单个元素的样式 136
12.2 改变一组元素的样式 138
12.3 获得元素的计算样式 139
12.4 创建样式表转换器 140
12.5 创建处理多媒体类型的样式表转换器 145
12.6 读取和修改已经存在的样式表 147
12.7 添加新的样式表规则 150
12.8 从样式表中删除一个规则 152
12.9 创建一个新的样式表 152
12.10 小结 155
第13章 动态HTML基础 156
13.1 事件的处理 156
13.1.1 简便方法:使用事件处理函数 157
13.1.2 W3C标准方法:使用事件监听者(Event Listeners) 159
13.2 获取元素尺寸 168
13.3 获取元素位置 169
13.4 检测鼠标光标的位置 171
13.5 当将鼠标放到某个元素上时显示工具提示 172
13.6 根据表的列对表进行排序 178
13.7 小结 183
第14章 计时器和动画 184
14.1 setTimeout和setInterval的使用 184
14.2 沿着某个确定路径移动对象 187
14.3 创建平滑的动画效果 193
14.3.1 动画帧时间 193
14.3.2 两帧之间移动距离的变化 194
14.3.3 动画效果的复杂度 194
14.3.4 计算机的速度 194
14.3.5 浏览器的速度 195
14.4 拖曳行为的实现 195
14.5 利用拖曳功能对列表重新排序 203
14.6 创建新闻滚动条 209
14.7 创建基于裁剪的过渡效果 214
14.8 创建滑动控制器 219
14.9 小结 224
第15章 DHTML菜单和导航 225
15.1 创建下拉式菜单或平展式菜单 227
15.2 添加箭头以显示子菜单的存在 235
15.3 添加计时器延迟菜单的开启和关闭 238
15.4 确保菜单一直位于窗口内 243
15.5 菜单显示在select元素之上 249
15.6 创建文件夹树或扩展菜单 255
15.7 在菜单中可扩展分支的指示 263
15.8 任何时候只允许一个菜单分支打开 267
15.9 自动打开当前的子分支 268
15.10 小结 272
第15章 JavaScript和可用性 273
16.1 JavaScript不具备可用性吗 273
16.1.1 可用性 274
16.1.2 受影响的用户 275
16.2 创建易于用键盘操作的脚本 276
16.3 使用设备无关的事件处理函数 278
16.4 创建键盘和鼠标都能使用的脚本 279
16.4.1 Rollovers与内容的显示 280
16.4.2 表单验证 282
16.4.3 拖放(Drag-and-drop)功能 283
16.4.4 AJAX和其他远程脚本技术 284
16.5 创建显示在焦点上的title属性工具提示 285
16.6 创建可用键盘访问的DHTML菜单 291
16.7 创建通过键盘可用的DHTML菜单 299
16.8 创建可用键盘控制的DHTML滑动控件 305
16.9 创建屏幕读取器可访问的脚本 311
16.9.1 JavaScript行为 313
16.9.2 技巧和深入研究 321
16.9.3 寻求最佳实践 323
16.10 小结 325
第17章 在JavaScript中使用Flash 326
17.1 检测浏览器是否安装了Flash 326
17.2 JavaScript和Flash之间的沟通 329
17.2.1 FSCommand 330
17.2.2 Flash/JavaScript集成工具包 331
17.3 小结 332
第18章 使用JavaScript构建Web应用程序 333
18.1 使用XMLHttpRequest获取数据 333
18.1.1 请求服务器上的数据 336
18.1.2 解析数据 337
18.1.3 缓存 338
18.1.4 AJAX框架 339
18.2 不使用XMLHttpRequest获取数据 339
18.3 创建自定义对话框 343
18.4 创建可编辑元素 349
18.5 控制文本选择 354
18.6 创建自动完成的文本域 358
18.7 小结 368
第19章 JavaScript中的面向对象技术 369
19.1 面向对象技术的优点 369
19.1.1 抽象性 370
19.1.2 封装性 370
19.1.3 类的继承 370
19.1.4 多态 371
19.2 基于对象的代码与面向对象的代码 372
19.3 创建一个面向对象的脚本 372
19.4 为对象创建方法 373
19.5 模拟继承 377
19.6 理解作用域(Scope) 379
19.7 命名空间的实现 381
19.8 小结 382
第20章 高级话题 383
20.1 使脚本运行得更快 383
20.1.1 减少常用对象的引用 384
20.1.2 使用三元操作符以及switch语句 386
20.1.3 优化循环 388
20.1.4 避免使用eval 389
20.1.5 避免严格警告的出现 390
20.1.6 为特定浏览器进行优化 390
20.2 减小脚本的代码量 393
20.2.1 将任务划分为函数(使用面向对象思想) 393
20.2.2 使用数组和循环以避免代码的重复 394
20.2.3 使用简洁的条件和返回语句 395
20.3 为Web优化脚本 396
20.3.1 去掉注释和不必要的空白符 396
20.3.2 使变量名和属性名简洁化 398
20.4 避免内存泄漏 399
20.4.1 避免循环引用 399
20.4.2 在使用之后进行清理 400
20.5 使脚本在Load事件之前运行 402
20.6 小结 404