前言 1
第一部分 JavaScript基础知识 1
第1章 JavaScript概述 1
1.1 JavaScript简介 1
译者序 1
1.2 什么是编程语言 2
1.3 JavaScript难学吗 2
1.4 你能用JavaScript做什么 3
1.5 你不能用JavaScript做什么 4
1.6 跨浏览器支持 4
2.1 怎样开始 5
2.1.1 文本编辑器 5
第2章 创建第一个JavaScript脚本 5
2.1.2 浏览器 6
2.2 基本脚本结构 7
2.2.1 〈script〉标记 7
2.2.2 将标记放在哪里 8
2.2.3 例1:向用户发送信息 9
2.3 更多JavaScript实例 10
2.3.1 例2:向页面写入数据 11
2.3.2 例3:一个JavaScript函数 12
2.3.3 例4:处理一个JavaScript事件 13
2.4 往代码中添加注释 15
2.5 创建外部JavaScript文件 16
2.6 调试和解决脚本问题 17
3.1 什么是变量 21
3.1.1 变量声明 21
第二部分 编程基础 21
3.1.2 在变量中保存数值 22
3.1.3 变量在语句中的使用 23
3.2 命名变量:规则和惯例 24
3.2.1 命名规则 24
3.2.2 命名变量的好方法 25
3.3 理解常量的数据类型 25
3.3.1 使用Numeric常量 26
3.3.2 使用String常量 27
3.3.3 理解Boolean常量 28
第4章 使用函数 30
4.1 什么是函数 30
4.2 函数的结构 30
4.3 将函数放在哪里 31
第3章 理解变量 31
4.4 使用函数 32
4.5 将值传给函数 34
4.6 从函数返回值 37
4.7 理解局部变量和全局变量 39
4.7.1 使用局部域 39
4.7.2 使用全局域 41
4.8 使用递归函数 41
4.9 避免无穷递归 44
第5章 建立JavaScript表达式 46
5.1 什么是表达式 46
5.2 理解表达式结构 46
5.3 建立数字表达式 47
5.3.1 算术操作符一览 47
5.3.2 使用加号(+)操作符 48
5.3.3 使用递增(++)操作符 49
5.3.4 使用减号(-)操作符 50
5.3.5 使用递减(--)操作符 51
5.3.6 使用乘号(*)操作符 52
5.3.7 使用除号(/)操作符 53
5.3.8 使用取模(%)操作符 53
5.3.9 使用算术赋值操作符 54
5.4 建立字符串表达式 55
5.5 建立比较表达式 57
5.5.1 比较操作符 57
5.5.2 使用等于(==)操作符 57
5.5.3 使用不等于(!=)操作符 58
5.5.4 使用大于(>)操作符 58
5.5.5 使用小于(<)操作符 58
5.5.6 使用大于等于(>=)操作符 58
5.5.7 使用小于等于(<=)操作符 58
5.5.8 比较操作符和数据转换 59
5.5.9 使用恒等于(===)操作符 60
5.5.10 使用非恒等于(!==)操作符 60
5.5.11 在比较表达式中使用字符串 60
5.5.12 使用条件(?:)操作符 61
5.6 建立逻辑表达式 62
5.6.1 逻辑操作符 62
5.6.2 使用AND( )操作符 62
5.6.3 使用OR(II)操作符 63
5.6.4 使用NOT(!)操作符 64
5.6.5 关于 和II操作符的高级问题 65
5.7 理解操作符的优先级 66
5.7.1 优先级 66
5.7.2 控制优先级 67
6.1 使用if()判断真假 70
第6章 代码控制I:条件 70
6.2 使用if()…else处理false结果 71
6.3 多重判断 72
6.3.1 使用AND( )和OR(II)操作符 73
6.3.2 嵌套多重if()语句 73
6.3.3 使用switch()语句 74
6.4 终止switch()语句 76
第7章 代码控制II:循环 77
7.1 什么是循环及为什么在代码中需要循环 77
7.2 while()循环 78
7.3 for()循环 79
7.4 do...while()循环 82
7.5 控制循环运动:break和continue 84
7.5.1 退出循环:使用break语句 84
7.5.2 执行下一次循环:使用continue语句 86
7.6 调试和解决脚本问题 87
第8章 使用对象 89
8.1 什么是对象 89
8.2 JavaScript对象层次 90
8.2.1 Window对象及其层次 90
8.2.2 其他内建的JavaScript对象 91
8.3 操作对象属性 92
8.3.1 引用一个属性 92
8.3.2 对象的多级属性 93
8.3.3 改变属性值 93
8.3.4 使用for()...in来循环访问对象的所有属性 94
8.4 使用对象的方法 96
8.5 使用with()简化对象表达式 97
9.2 创建事件处理程序 99
9.2.1 第1步:添加设置事件处理程序的属性 99
9.1 理解事件 99
第9章 处理事件 99
9.2.2 第2步:设置属性值 100
9.2.3 将事件处理程序设置为对象属性 102
9.2.4 使用this引用事件的对象 103
9.3 使用JavaScript事件 103
9.3.1 对象获得和失去输入焦点时的处理 104
9.3.2 Change事件:处理被修改的表单数据 107
9.3.3 处理键盘事件 108
9.3.4 处理鼠标事件 111
9.4 使用Blur和Focus事件来避免死循环 116
第10章 使用数组 119
10.1 什么是数组 119
10.2 定义一个数组 120
10.3 给数组赋值 121
10.3.1 定义数组的同时给数组赋值 122
10.3.2 使用一个循环给数组赋值 123
10.3.3 使用一个循环来使用数组中的数据 124
10.3.4 创建多维数组 125
10.4 使用Array对象 128
10.4.1 Array对象的属性 128
10.4.2 Array对象的方法 130
10.5 使用prototype模拟 Netscape-only方法 138
第11章 与用户交互 145
11.1 为什么要进行交互 145
11.2 使用alert()方法显示信息 145
11.3 使用confirm()方法提问 147
11.4 使用prompt()方法获取输入 148
11.5 使用交互应适可而止 151
12.2 理解不同类型的错误 153
12.1 什么是bug 153
第12章 代码调试 153
12.2.1 语法错误 154
12.2.2 运行错误 154
12.2.3 逻辑错误 154
12.3 调试策略 155
12.3.1 10个最常见的错误一览 155
12.3.2 显示表达式的值 157
12.3.3 显示对象属性的值 160
12.3.4 更多的调试策略 161
12.4 10个最常见的JavaScript错误信息 162
第三部分 基本对象 165
第13章 处理日期和时间:Date对象 165
13.1 理解JavaScriptr的日期 165
13.3 使用Date对象 166
13.2 Date对象使用的参数 166
13.3.1 指定当前的日期和时间 167
13.3.2 指定任意日期和时间 167
13.4 从日期中提取信息 168
13.4.1 将getMonth()转换为月份名 170
13.4.2 将getDay()转换为星期名 172
13.5 设置日期 173
13.6 执行日期计算 175
13.6.1 确定个人的年龄 176
13.6.2 执行复杂的日期计算 176
13.6.3 按周、天等计算年龄 177
13.6.4 计算两个日期之间的天数 178
13.7 其他Date对象方法 179
第14章 使用数字:Math对象 181
14.1 JavaScript如何处理数字 181
14.2.1 parseInt()函数 183
14.2 在字符串和数字之间转换 183
14.2.2 parseFloat()函数 184
14.2.3 eval()函数 184
14.3 Math对象 186
14.4 Math对象的属性 186
14.5 Math对象的方法 186
14.5.1 圆整数字 187
14.5.2 圆整数字到指定小数位 188
14.5.3 执行财务计算 189
14.5.4 产生随机数字 194
第15章 操作文本:String对象 198
15.1 字符串和String对象 198
15.2 确定字符串的长度 199
15.3 String对象的方法 200
15.3.1 格式化字符串 200
15.3.2 搜索子字符串 203
15.3.3 提取子字符串的方法 205
15.3.4 其他String对象的方法 211
15.4 编写一个公共字符串函数库 213
15.4.1 从左边提取字符:left()方法 213
15.4.2 从右边提取字符:right()方法 214
15.4.3 清除多余的空格:trim()方法 214
15.4.4 将字符串转换为标题样式:titleCase()方法 216
15.4.5 用另一个字符串取代子字符串 218
15.4.6 使用千分符格式化一个数字 219
15.4.7 用零补齐数字 221
第16章 控制浏览器:Navigator对象 223
16.1 关于Navigator对象 223
16.2 测定用户浏览器的信息 225
16.2.1 测定浏览器名称(I) 228
16.2.2 测定浏览器版本 229
16.2.3 理解 userAgent属性 231
16.2.4 测定浏览器名称(II) 233
16.2.5 测定操作系统 235
16.2.6 获取所有信息:浏览器嗅探器 237
第四部分 操作浏览器窗口 241
第17章 理解Window对象 241
17.1 回顾Window对象层次 241
17.2 引用Window对象 242
17.3 窗口尺寸和屏幕对象 243
17.4 在状态栏中显示信息 245
17.4.1 显示自定义链接信息 246
17.4.2 设置默认的状态栏信息 247
17.5 使用JavaScript超时设定和时间间隔 248
17.5.1 使用超时来一次性执行将来动作 248
17.5.2 使用时间间隔重复执行将来动作 250
17.5.3 使用setTimeout()来模仿setInterval() 251
17.5.4 创建滚动的状态栏信息 252
第18章 打开、移动和调节窗口尺寸 255
18.1 打开窗口 255
18.1.1 JavaScript方式:window.open()方法 255
18.1.2 最简单的windows.open()方法的语法 255
18.1.3 控制新窗口的尺寸和位置 258
18.1.4 显示工具栏、菜单栏和其他窗口元素 260
18.1.5 引用打开窗口的页面 263
18.2 关闭窗口 264
18.3 移动窗口 266
18.3.1 移动窗口到指定位置 266
18.3.2 按指定量移动窗口 270
18.4.1 调整窗口到指定尺寸 273
18.4 调整窗口尺寸 273
18.4.2 按指定量调整窗口尺寸 274
第19章 JavaScript网上冲浪:Location对象和History对象 275
19.1 在脚本控制下进行网上冲浪 275
19.2 使用Location属性来改变显示的页面 275
19.2.1 Location对象的属性 277
19.2.2 使用Location对象的属性来网上冲浪 278
19.2.3 使用search传递参数至另一页面 281
19.2.4 Location 对象的方法 284
19.3 用History对象编程控制网上冲浪 285
第20章 框架 289
20.1 理解框架引用 289
20.1.1 父到子引用 290
20.1.2 子到父引用 291
20.1.3 子到子引用 292
20.1.4 嵌套框架 294
20.1.5 top属性 300
20.2 框架编程 301
20.2.1 将页面载入框架 301
20.2.2 用一个链接更新多个框架 301
20.2.3 导航至框架的顶部和底部 302
20.2.4 构造一个页面:从别人的框架中获取 304
20.2.5 重构一个页面:将子页面放回框架集中 305
20.2.6 使用别的框架的变量和函数 307
20.2.7 使框架同步载入 309
第21章 JavaScript实例:建立一个密码保护页面 311
21.1 Web页的安全问题 311
21.2 首次尝试用密码保护 311
21.2.1 提示输入密码 311
21.2.2 将密码和文件名转换成编码 313
21.3 第一个真正的解决方案:隐藏密码的技巧 315
21.3.1 试试这个技巧 315
21.3.2 使脚本变得界面友好一些 316
21.4 解决“404 Not Found”问题 318
21.5 处理多用户和多密码 321
21.6 调试和解决脚本问题 325
第五部分 使用Document对象 327
第22章 理解Document对象 327
22.1 Document对象的结构 327
22.2 Document对象的属性 327
22.3 改变文档颜色 329
22.3.1 使用颜色名称 330
22.3.2 使用RGB值 332
22.4 Document对象的方法 334
22.5 向页面写入数据 335
22.5.1 启动时写人文档 336
22.5.2 写入与浏览器有关的代码 338
22.5.3 在另一个窗口中写入文档 339
第23章 链接和锚 343
23.1 使用Link对象 343
23.1.1 在链接中使用函数来取代URL 343
23.1.2 引用Link对象 344
23.1.3 Link对象属性 344
23.1.4 Link对象的事件 349
23.2 使用Anchor对象 355
23.2.1 引用Anchor对象 355
23.2.2 Anchor对象的属性 355
24.1 使用Image对象 358
24.1.1 引用Image对象 358
第24章 使用图像和鼠标翻转 358
24.1.2 Image对象的属性 359
24.1.3 改变图像源 359
24.1.4 循环显示多幅图像 360
24.1.5 创建一个正在“运行”的数字钟 362
24.1.6 预载图像 364
24.1.7 为动画预载图像 365
24.1.8 将图像载入自定义尺寸的窗口 367
24.1.9 处理Image对象的事件 369
24.2 创建鼠标翻转效果 374
24.2.1 最简单的鼠标翻转 375
24.2.2 预载鼠标翻转图像 377
24.2.3 使用文本链接的鼠标翻转来改变图像 378
25.1.1 什么是cookie 380
25.1 保存状态:真正的全局变量的需求性 380
第25章 创建和使用cookie 380
25.1.2 cookie的优点 381
25.1.3 cookie的缺点 382
25.2 设置cookie数据 382
25.2.1 最简单的情况:设置cookie的名和值 383
25.2.2 获取cookie值 383
25.2.3 处理多个cookie 385
25.2.4 加入终止日期 387
25.2.5 指定路径 388
25.2.6 设置其他cookie数据 389
25.2.7 处理全部cookie参数 389
25.2.8 删除cookie 392
25.3 高级cookie操作 393
25.3.1 在单个cookie中存储多个值 393
25.3.2 编码cookie值 394
25.3.3 加密cookie值 397
25.4 构建一个更健壮的密钥 401
第26章 JavaScript实例:建立导航 403
26.1 导航的必要性 403
26.2 第1阶段:设计和创建Menu对象 404
26.3 第2阶段:写入基本菜单 409
26.4 第3阶段:扩展和折叠菜单项 412
26.5 第4阶段:加入图形和其他的增强界面元素 415
第六部分 使用表单 423
第27章 理解Form对象 423
27.1 Form对象的结构 423
27.1.1 引用Form对象 423
27.1.2 Form对象的属性 424
27.2 理解表单域 424
27.2.1 引用表单域 425
27.2.2 表单域的公共属性 426
27.2.3 循环整个表单域 426
27.2.4 将表单和表单域对象传递至一个函数 427
27.3 按钮编程 428
27.3.1 接受或拒绝提交 428
27.3.2 接受或拒绝重置 431
27.3.3 使用按钮来处理其他代码 432
27.3.4 强制提交和重置:submit()方法和rest()方法 433
27.3.5 限制表单提交的次数 434
第28章 表单域编程 438
28.1 开始真正的表单编程 438
28.2 编程实现文本域 438
28.2.1 Text对象 438
28.2.2 Textarea对象 439
28.2.4 FileUpload对象 440
28.2.3 Password对象 440
28.2.5 Hidden对象 441
28.2.6 获取文本域的值 441
28.2.7 设置文本域的值 443
28.2.8 一个更酷的例子:抵押计算器 445
28.2.9 使文本域只读 449
28.3 复选框编程 451
28.3.1 获取复选框的状态 452
28.3.2 设置复选框的状态 452
28.3.3 使用复选框来禁用表单域 453
28.3.4 控制被激活复选框的数量 454
28.4 单选钮编程 456
28.4.1 引用单选钮 456
28.4.2 获取单选钮的状态 457
28.5.1 Select对象 459
28.4.3 设置单选钮的状态 459
28.5 选择列表编程 459
28.5.2 Option对象 460
28.5.3 在列表中引用一个选项 460
28.5.4 获取当前被选中的列表选项 461
28.5.5 获取多个被选中的选项 461
28.5.6 设置被选中的列表选项 463
28.5.7 创建一个导航列表 463
28.5.8 动态地修改列表 465
第29章 执行表单有效性验证 469
29.1 基于浏览器的有效性验证的必要性 469
29.2 显示表单数据用以确认 470
29.3 限制表单域 474
29.3.1 一个窍门:为对象添加自定义属性 475
29.3.2 检察空域 477
29.3.3 检查仅包含空白字符的域 479
29.4 检查域的数据类型 480
29.4.1 检查字母数据 480
29.4.2 检查整型数据 481
29.4.3 检查有符号整型数据 482
29.4.4 检查浮点型数据 483
29.5 检查无效数据 485
29.5.1 检查数字的范围 485
29.5.2 从域中删除无关字符 488
29.5.3 用掩码来检查字母数字数据 491
29.5.4 检查E-mail地址 493
30.2 创建项目数据 496
30.2.1 设计数据 496
30.1 将目光移至电子商务 496
第30章 JavaScript实例:创建购物车 496
30.2.2 使用JavaScript创建数据库 497
30.3 项目一览 501
30.4 建立商店页面 503
30.5 理解购物车 505
30.5.1 使用购物车 505
30.5.2 使用JavaScript创建空购物车 506
30.5.3 购物车按钮 508
30.6 理解个人资料页面 510
30.6.1 简介 510
30.6.2 初始化个人资料页面 513
30.6.3 对个人资料进行有效性验证 514
30.7 理解信用卡信息页面 515
30.7.1 开发票 516
30.7.2 初始化信用卡信息并进行有效性验证 519
31.1 动态HTML的必要性 523
第七部分 使用动态 HTML 523
第31章 动态HTML概述 523
31.2 动态HTML:控制特殊效果的脚本 524
31.3 今日的DHTML:纷繁复杂 524
31.4 大的DHTML图片 524
31.5 文档对象模型介绍 525
31.6 DOM:节点层次 527
第32章 DHTML版本5:W3C文档对象模型 530
32.1 处理DOM中的节点 530
32.1.1 指定节点 530
32.1.2 获取节点信息 532
32.1.3 使用元素 534
32.1.4 使用标记属性 536
32.1.5 使用样式 539
32.1.6 使用文本节点 541
32.1.7 实例:文本淡入淡出效果 543
32.2 改变文档层次结构 547
32.2.1 创建元素 548
32.2.2 创建文本节点 548
32.2.3 添加子节点 548
32.2.4 插入子节点 551
32.2.5 取代子节点 555
32.2.6 复制子节点 557
32.2.7 删除子节点 560
第33章 DHTML版本4:私有对象模型 562
33.1 DOM出现之前 562
33.2 Internet Explore4的DHTML文档对象模型 562
33.2.1 批定元素 563
33.2.4 使用文本 565
33.2.3 其他DHTML DOM和W3C DOM的相似性 565
33.2.2 获取和设置标记属性值 565
33.3 Netscape Navigator 4文档对象模型 566
第34章 跨浏览器解决方案:检测和通用函数 570
34.1 关于跨浏览器 570
34.1.1 什么是跨浏览器 570
34.1.2 处理不同的浏览器 571
34.2 检测用户浏览器 573
34.2.1 使用浏览器版本检测 573
34.2.2 使用对象检测 575
34.3 创建自定义对象前端 576
34.3.1 测试对象 576
34.3.2 跨浏览器样式引用 578
34.3.3 创建自定义对象 579
34.3.5 定义自定义对象方法 582
34.3.4 使用自定义对象 582
34.3.6 其他的跨浏览器函数 597
第35章 跨浏览器的DHTML实例 602
35.1 一些注意事项 602
35.2 跨浏览器DHTML文本实例 602
35.2.1 跨浏览器工具提示 602
35.2.2 水平滚动文本 605
35.2.3 垂直滚动文本 615
35.3 跨浏览器DHTML图像实例 622
35.3.1 创建一个在用户滚动页面时保持不动的徽标 622
35.3.2 建立跨浏览器DHTML的幻灯放映 624
第八部分 附录 653
附录A 调度JavaScript脚本的工具 653
附录B JavaScript保留字和关键字 666
附录C 使用正规表达式 669