第1章 JavaScript入门 1
1.1 JavaScript适合你吗 1
1.2本书适合你吗 2
1.3本书的目标 2
1.4 JavaScript能做什么 3
1.5 JavaScript的替代技术 4
1.5.1 CGI脚本 5
1.5.2 VBScript 6
1.5.3 Java 6
1.5.4 Flash 6
1.6 JavaScript的局限性 7
1.6.1 JavaScript无法与服务器对话 7
1.6.2 JavaScrit不能创建图形 7
1.6.3 JavaScript在不同的浏览器中存在差异 7
1.7新手上路 8
1.8把JavaScript脚本放在网页中的什么地方 8
1.9处理老式浏览器 10
1.10第一个JavaScript程序 11
1.11小结 12
1.12习题 12
第2章 使用变量和内置函数自动更新网页 13
2.1存储信息的变量 14
2.1.1变量的语法 14
2.1.2变量的命名 15
2.1.3通过变量做算术 16
2.2显示结果 16
2.3字符串 18
2.4再谈函数 19
2.4.1 alert() 19
2.4.2图2-9的逐行分析 21
2.4.3 prompt() 21
2.5参数 23
2.6向网页中写入日期 23
2.6.1内置的Date函数 24
2.6.2日期和时间方法 24
2.6.3写入日期和时间的代码 25
2.6.4图2-12的逐行分析 26
2.7欧洲航天局如何向主页中写入日期 28
2.8小结 28
2.9习题 29
第3章 满足浏览器的需要 31
3.1浏览器检测实例 31
3.2检测浏览器的方法 33
3.2.1快捷但粗糙的浏览器检测 33
3.2.2更精确的浏览器检测 34
3.3把访客重定向到其他网页 35
3.4 if-then语句 36
3.4.1布尔表达式 36
3.4.2嵌套 38
3.4.3 if-then-else语句 38
3.4.4 if-then-else-if语句 39
3.4.5花括号应该何时用在何处 39
3.5 OR和AND操作符 41
3.5.1 OR操作符 41
3.5.2 AND操作符 43
3.6综合起来 43
3.7有关布尔表达式的一些细节 45
3.8 Netscape网站如何提供针对浏览器的内容 46
3.9小结 48
3.10习题 48
第4章 制作翻转图 49
4.1一个真实的翻转图 49
4.2触发事件 51
4.2.1事件类型 51
4.2.2 JavaScript中的引号 53
4.2.3单击链接而不离开当前页面 54
4.2.4更多有意思的操作 55
4.3替换图像 55
4.4操纵多幅图像 56
4.5句点的作用是什么 57
4.5.1 document对象 58
4.5.2对象的属性 59
4.5.3实现翻转效果 59
4.5.4图像预载 60
4.6 Tin House网站翻转图的工作原理 61
4.7小结 62
4.8习题 62
第5章 打开和操纵窗口 63
5.1打开窗口查看补充信息的真实例子 63
5.2操纵作为对象的窗口 65
5.3打开窗口 65
5.3.1操纵新窗口的外观 65
5.3.2某些浏览器和计算机会以不同方式打开窗口 68
5.4关闭窗口 68
5.5正确地命名:窗口如何识别自己和其他窗口 69
5.6隐藏或显示窗口 69
5.7窗口的属性 70
5.7.1 status属性 70
5.7.2 opener属性 71
5.8其他window对象的方法 73
5.8.1缩放窗口 73
5.8.2移动窗口 73
5.9小结 75
5.10习题 76
第6章 编写自己的JavaScript函数 79
6.1函数简化操作 79
6.1.1 JavaScript函数的基本结构 80
6.1.2函数的命名 80
6.1.3圆括号和花括号 81
6.1.4一个简单的函数 81
6.2编写灵活的函数 82
6.2.1使用参数 82
6.2.2图6-4的逐行分析 83
6.2.3使用多个参数 85
6.3从函数中取得信息 87
6.4处理Y2K问题 88
6.5适当地定义变量 90
6.6小结 92
6.7习题 92
第7章 通过表单提供和接收信息 95
7.1表单的应用实例 95
7.2表单基础 97
7.2.1文本输入框 98
7.2.2按钮、复选框和单选按钮 98
7.2.3选择元素 100
7.2.4文本区 101
7.2.5表单元素小结 102
7.3表单和JavaScript 102
7.3.1命名表单元素 102
7.3.2命名单选按钮 103
7.3.3命名选项 104
7.4读取和设置表单元素 104
7.4.1从文本框中读取信息 104
7.4.2设置文本框的值 106
7.4.3文本区 107
7.4.4复选框 107
7.4.5单选按钮 110
7.4.6下拉菜单和滚动列表 110
7.5通过表单元素处理事件 111
7.6缩短引用 113
7.7将下拉菜单作为导航工具 113
7.8最后一个表单简写形式 114
7.9 Doctors Without Borders网站中下拉菜单导航工具的工作原理 116
7.10小结 116
7.11习题 117
第8章 通过数组和循环记录信息 119
8.1有关数组的实例 119
8.2 JavaScript的内置数组 120
8.3数组中包含多少个项目 122
8.4遍历数组 122
8.5 while循环 124
8.5.1 while循环和数组 125
8.5.2不要草率行事 126
8.5.3在循环中使用array.length 126
8.5.4递增的简写 127
8.5.5小心无限循环 127
8.6 for循环 127
8.7 AntWeb如何选中所有复选框 128
8.8创建你自己的数组 130
8.9本书网站中提示框的工作原理 131
8.9.1检查空句 132
8.9.2检查数组中的最后一个元素 133
8.9.3测试数组的极限 133
8.9.4 startScroll()函数 133
8.9.5简化版 134
8.10循环可以嵌套 135
8.11逐个创建数组元素 136
8.12关联数组 137
8.13小结 140
8.14习题 140
第9章 计时事件 143
9.1计时事件的实例 143
9.2通过setTimeout()设置警报 144
9.3通过clearTimeout()取消警报 145
9.4重复计时操作 146
9.4.1图9-5的逐行分析 148
9.4.2对表单元素使用parseInt() 148
9.4.3在设置新计时之前清除计时 149
9.4.4在函数外部声明保存计时的变量 149
9.5通过计时循环构建一个时钟 149
9.6本书网站中计时器的工作原理 151
9.7 Space.com中倒计时脚本的工作原理 153
9.7.1计算时间 155
9.7.2全局变量和常量 156
9.8计时播放的幻灯片 156
9.9更安全的rotateImage()函数 158
9.9.1为什么在函数外部声明变量不安全 158
9.9.2为什么不能在计时循环中使用var 159
9.9.3解决方案 159
9.9.4障碍 160
9.9.5对障碍的解决方案 161
9.9.6为什么在rotateImage()函数外部声明the_images 161
9.10小结 162
9.11习题 162
第10章 使用框架和图像地图 163
10.1框架和图像地图的实例 163
10.2框架 164
10.2.1框架基础 164
10.2.2框架和JavaScrip 166
10.2.3框架和图像替换 167
10.2.4一次修改两个框架的内容 170
10.2.5框架内部的框架 171
10.2.6 JavaScript和框架内部的框架 173
10.2.7摆脱框架 173
10.2.8使用框架保存信息 174
10.2.9图10-15的逐行分析 177
10.3图像地图 178
10.3.1图像地图基础 179
10.3.2图像地图和JavaScript 180
10.4 Salon中昆虫大餐脚本的工作原理 180
10.4.1 Salon的嵌套框架 182
10.4.2 Salon的图像地图 182
10.4.3 changeMe()函数 182
10.5小结 183
10.6习题 183
第11章 验证表单、消息字符串及与服务器端程序协作 185
11.1表单验证的实例 185
11.2确保访客填写了一个表单元素 186
11.3字符串处理 190
11.3.1分解字符串 190
11.3.2通过正则表达式匹配字符串模式 196
11.4 Dictionary.com表单验证程序的工作原理 200
11.5小结 206
11.6习题 206
第12章 通过cookie保存访客信息 209
12.1使用cookie的实例 210
12.2什么是cookie 210
12.3 cookie能做什么,不能做什么 211
12.4操纵cookie 212
12.4.1设置cookie 212
12.4.2读取cookie 212
12.4.3重置cookie 213
12.4.4设置多段信息 214
12.4.5设置cookie的有效时间 216
12.4.6谁能读取cookie 218
12.4.7完整的cookie 218
12.4.8设置多个cookie 219
12.5 cookie库 219
12.6基于cookie的购物车 220
12.6.1向购物车中添加项目 221
12.6.2结账页面 223
12.6.3 readTheCookie()函数 225
12.6.4 checkOut()函数 226
12.7小结 226
12.8习题 227
第13章 DHTML 229
13.1 DHTML实例 229
13.2 CSS基础 230
13.2.1 〈div〉标记 230
13.2.2通过CSS定位div 231
13.2.3隐藏div 233
13.2.4层叠div 233
13.3 JavaScript和DHTML 234
13.4让div移动 235
13.5使用setTimeout()和clearTimeout()方法为页面添加动画 235
13.6改变div的内容 237
13.7 span标记和getElementsByTagName() 238
13.8高级DOM技术 241
13.8.1 W3C DOM简介 241
13.8.2使用W3C DOM方法创建和添加元素 242
13.8.3向元素中添加文本 242
13.8.4在页面中间添加元素和删除元素 243
13.8.5更多的DOM细节信息 245
13.8.6使用DOM操作页面 246
13.9高级事件处理 246
13.9.1事件对象 247
13.9.2使用JavaScript添加事件处理程序 250
13.10下拉菜单 253
13.10.1图13-23的逐行分析 255
13.10.2边框 255
13.11小结 255
13.12习题 256
第14章 AJAX基础 257
14.1 Ajax的实例 257
14.2 Ajax概述 258
14.2.1异步——Ajax中的A 260
14.2.2 XML——Ajax中的X 260
14.2.3 JavaScript——Ajax中的J 260
14.3创建和发送请求 260
14.3.1创建请求对象 261
14.3.2告诉请求对象向哪里发送请求 261
14.3.3当请求响应时做什么 262
14.3.4编写在请求响应后被调用的JavaScript 263
14.3.5发送请求 263
14.3.6组合起来 264
14.3.7取得结果 265
14.4示范异步性 265
14.5 Ajax和可用性 269
14.5.1后退按钮 269
14.5.2 URL和书签 269
14.5.3乏味的设计 269
14.6使用Ajax,或者不用Ajax 270
14.6.1坏:只因为你会 270
14.6.2坏:它是一种热门的新事物 270
14.6.3坏:使用新的模糊的手段取代有效的手段 270
14.6.4好:环境内的数据操作 270
14.6.5好:交互式部件 271
14.6.6好:保存状态 271
14.7小结 271
14.8习题 271
第15章 JavaScript和Ajax中的XML 273
15.1 Ajax和XML的实例 273
15.2 Google Suggest 275
15.3 XML 276
15.4 XML的规则 277
15.4.1 XML标题 277
15.4.2 XML元素 278
15.4.3 XML属性 278
15.4.4不合法的XML字符 278
15.4.5 XML文档只有一个根元素 279
15.4.6对XML格式的最后说明 279
15.5处理XML 279
15.5.1图15-6的逐行分析 281
15.5.2 Internet Explorer、responseXML和客户端Ajax 285
15.5.3 XML中空格的问题 285
15.6创建翻译建议应用程序 286
15.6.1查找翻译 287
15.6.2显示结果 289
15.7小结 290
15.8习题 290
第16章 服务器端Ajax 293
16.1服务器端Ajax的实例 293
16.2 Web服务器的能力 295
16.3服务器端编程语言 297
16.4 PHP基础 297
16.5通过GET请求向PHP发送简单的输入 298
16.5.1在URL中传递输入 299
16.5.2用PHP读取GET请求中的输入 300
16.6 使用Ajax的GET请求创建Google Suggest应用程序 301
16.6.1使用Ajax和PHP联系第三方Web服务器 302
16.6.2定制的Google Suggest应用程序的JavaScript部分 302
16.6.3使用PEP联络其他Web服务器 306
16.7 Ajax和POST方法 307
16.7.1适合Ajax的表单 308
16.7.2通过Ajax发送POST请求 309
16.7.3从浏览器向Web服务器发送XML信息 311
16.8 HEAD请求:取得与服务器端文件有关的信息 311
16.8.1为响应添加头部信息 312
16.8.2头部与XML 312
16.9缓存问题 313
16.10 PHP中的文件处理 313
16.10.1通过PHP为文本文件创建和添加内容 313
16.10.2在PEP中读取文件 314
16.11如何应对通信中断 315
16.12当服务器端文件改变时自动更新网页 317
16.12.1 readFileDo Function() 319
16.12.2 callReadFile() 319
16.12.3 callUpdateIf Changed() 320
16.12.4 stopTimer() 320
16.12.5回顾与引申 320
16.12.6 服务器端PEP代码 320
16.13小结 321
16.14习题 321
第17章 综合应用实例:共享的To Do列表 323
17.1 To Do列表应用程序的功能 323
17.2 To Do列表的数据文件 326
17.2.1 userInfo.xml 326
17.2.2 To Do列表文件 327
17.3 To Do列表的服务器端 328
17.4 To Do列表的客户端,第1部分:HTML 329
17.5 To Do列表的客户端,第2部分:JavaScript 330
17.5.1函数的路线图 331
17.5.2登录或退出应用程序 331
17.5.3与登录相关的函数 333
17.5.4辅助函数 335
17.5.5显示可用的列表 337
17.5.6显示特定的列表 340
17.5.7处理对列表的修改 344
17.5.8操纵XML文档的限制 347
17.5.9添加新条目 349
17.6简短的结束语 350
17.6.1客户端代码还是服务器端代码 351
17.6.2安全问题 351
17.7小结 352
17.8习题 353
第18章 调试JavaScript和Ajax 355
18.1良好的编程习惯 355
18.1.1从注释开始 356
18.1.2填充代码 356
18.2避免常见的错误 357
18.2.1使用一致的命名约定 357
18.2.2避免使用保留字 357
18.2.3别忘了在逻辑测试中使用两个等号 358
18.2.4正确地使用引号 358
18.3发现bug 359
18.3.1通过alert()语句输出变量 359
18.3.2除alert()之外的调试手段 360
18.3.3使用浏览器的bug检测程序 362
18.3.4使用JavaScript调试程序 362
18.3.5在Firefox 1.5和2.0中调试Ajax 366
18.3.6其他调试资源 367
18.4修改bug 368
18.4.1备份程序 368
18.4.2一次修改一个bug 368
18.4.3避免巫毒编程 369
18.4.4查找类似的bug 369
18.4.5保持头脑清醒 369
18.4.6寻求帮助 369
18.5小结 370
附录A 习题答案 371
附录B 学习资源 397
附录C JavaScript对象和函数参考 403
附录D 第15章的意大利语翻译程序和第17章的To Do列表应用程序 451