-
Notifications
You must be signed in to change notification settings - Fork 5
/
javascript.txt
1399 lines (1356 loc) · 38.2 KB
/
javascript.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1.2 DOM
1.3 浏览器战争
1.3.1 DHTML
1.3.2 浏览器之间的冲突
1.4 制定标准
1.4.1 浏览器以外的考虑
1.4.2 浏览器战争的结局
1.4.3 崭新的起点
1.5 小结
第2章 JavaScript语法
2.1 准备工作
2.2 语法
2.2.1 语句
2.2.2 注释
2.2.3 变量
2.2.4 数据类型
2.2.5 数组
2.2.6 对象
2.3 操作
2.4 条件语句
2.4.1 比较操作符
2.4.2 逻辑操作符
2.5 循环语句
2.5.1 while循环
2.5.2 for循环
2.6 函数
2.7 对象
2.7.1 内建对象
2.7.2 宿主对象
2.8 小结
第3章 DOM
3.1 文档:DOM中的"D"
3.2 对象:DOM中的"O"
3.3 模型:DOM中的"M"
3.4 节点
3.4.1 元素节点
3.4.2 文本节点
3.4.3 属性节点
3.4.4 CSS
3.4.5 获取元素
3.4.6 盘点知识点
3.5 获取和设置属性
3.5.1 get Attribute
3.5.2 set Attribute
3.6 小结
第4章 案例研究:JavaScript图片库
4.1 标记
4.2 JavaScript
4.2.1 非DOM解决方案
4.2.2 最终的函数代码清单
4.3 应用这个JavaScript函数
4.4 对这个函数进行扩展
4.4.1 child Nodes属性
4.4.2 node Type属性
4.4.3 在标记里增加一段描述
4.4.4 用JavaScript改变这段描述
4.4.5 node Value属性
4.4.6 first Child和last Child属性
4.4.7 利用node Value属性刷新这段描述
4.5 小结
第5章 最佳实践
5.1 过去的错误
5.1.1 不要怪罪JavaScript
5.1.2 Flash的遭遇
5.1.3 质疑一切
5.2 平稳退化
5.2.1 "javascript:"伪协议
5.2.2 内嵌的事件处理函数
5.2.3 谁关心这个
5.3 向CSS学习
5.3.1 结构与样式的分离
5.3.2 渐进增强
5.4 分离JavaScript
5.5 向后兼容
5.5.1 对象检测
5.5.2 浏览器嗅探技术
5.6 性能考虑
5.6.1 尽量少访问DOM和尽量减少标记
5.6.2 合并和放置脚本
5.6.3 压缩脚本
5.7 小结
第6章 案例研究:图片库改进版
6.1 快速回顾
6.2 它支持平稳退化吗
6.3 它的JavaScript与HTML标记是分的吗
6.3.1 添加事件处理函数
6.3.2 共享onload事件
6.4 不要做太多的假设
6.5 优化
6.6 键盘访问
6.7 把JavaScript与CSS结合起来
6.8 DOM Core和HTML-DOM
6.9 小结
第7章 动态创建标记
7.1 一些传统方法
7.1.1 document. write
7.1.2 inner HTML属性
7.2 DOM方法
7.2.1 create Element方法
7.2.2 append Child方法
7.2.3 create Text Node方法
7.2.4 一个更复杂的组合
7.3 重回图片库
7.3.1 在已有元素前插入一个新元素
7.3.2 在现有方法后插入一个新元素
7.3.3 图片库二次改进版
7.4 Ajax
7.4.1 XML Http Request对象
7.4.2 渐进增强与Ajax
7.4.3 Hijax
7.5 小结
第8章 充实文档的内容
8.1 不应该做什么
8.2 把"不可见"变成"可见"
8.3 内容
8.3.1 选用HTML、XHTML还是HTML5
8.3.2 CSS
8.3.3 JavaScript
8.4 显示"缩略语列表"
8.4.1 编写display Abbreviations函数
8.4.2 创建标记
8.4.3 一个浏览器"地雷"
8.5 显示"文献来源链接表"
8.6 显示"快捷键清单"
8.7 检索和添加信息
8.8 小结
第9章 CSS-DOM
9.1 三位一体的网页
9.1.1 结构层
9.1.2 表示层
9.1.3 行为层
9.1.4 分离
9.2 style属性
9.2.1 获取样式
9.2.2 设置样式
9.3 何时该用DOM脚本设置样式
9.3.1 根据元素在节点树里的位置来设置样式
9.3.2 根据某种条件反复设置某种样式
9.3.3 响应事件
9.4 class Name属性
9.5 小结
第10章 用JavaScript实现动画效果
10.1 动画基础知识
10.1.1 位置
10.1.2 时间
10.1.3 时间递增量
10.1.4 抽象
10.2 实用的动画
10.2.1 提出问题
10.2.2 解决问题
10.2.3 CSS
10.2.4 JavaScript
10.2.5 变量作用域问题
10.2.6 改进动画效果
10.2.7 添加安全检查
10.2.8 生成HTML标记
10.3 小结
第11章 HTML5
11.1 HTML5简介
11.2 来自朋友的忠告
11.3 几个示例
11.3.1 Canvas
11.3.2 音频和视频
11.3.3 表单
11.4 HTML5还有其他特性吗
11.5 小结
第12章 综合示例
12.1 项目简介
12.1.1 原始资料
12.1.2 站点结构
12.1.3 页面结构
12.2 设计
12.3 CSS
12.3.1 颜色
12.3.2 布局
12.3.3 版式
12.4 标记
12.5 JavaScript
12.5.1 页面突出显示
12.5.2 JavaScript幻灯片
12.5.3 内部导航
12.5.4 JavaScript图片库
12.5.5 增强表格
12.5.6 增强表单
12.5.7 压缩代码
12.6 小结
附录 JavaScript库
为什么要使用JavaScript
分析JavaScript
一个简单的试验场
第2 章 语法
空白
标识符
数字
字符串
语句
表达式
字面量
函数
第3 章 对象
对象字面量
检索
更新
引用
原型
反射
枚举
删除
减少全局变量污染
第4 章 函数
函数对象
函数字面量
调用
参数
返回
异常
扩充类型的功能
递归
作用域
闭包
回调
模块
级联
柯里化
记忆
第5 章 继承
伪类
对象说明符
原型
函数化
部件
第6 章 数组
数组字面量
长度
删除
枚举
容易混淆的地方
方法
指定初始值
第7 章 正则表达式
一个例子
结构
元素
第8 章 方法
Array
Function
Number
Object
RegExp
String
第9 章 代码风格
第10 章 优美的特性
附录A 毒瘤
附录B 糟粕
附录C JSLint
附录D 语法图
附录E JSON
索引
第1章 JavaScript概述
1.1 JavaScript语言核心
1.2 客户端JavaScript
第一部分 JavaScript 语言核心
第2章 词法结构
2.1 字符集
2.2 注释
2.3 直接量
2.4 标识符和保留字
2.5 可选的分号
第3章 类型、值和变量
3.1 数字
3.2 文本
3.3 布尔值
3.4 null和undefined
3.5 全局对象
3.6 包装对象
3.7 不可变的原始值和可变的对象引用
3.8 类型转换
3.9 变量声明
3.10 变量作用域
第4章 表达式和运算符
4.1 原始表达式
4.2 对象和数组的初始化表达式
4.3 函数定义表达式
4.4 属性访问表达式
4.5 调用表达式
4.6 对象创建表达式
4.7 运算符概述
4.8 算术表达式
4.9 关系表达式
4.10 逻辑表达式
4.11 赋值表达式
4.12 表达式计算
4.13 其他运算符
第5章 语句
5.1 表达式语句
5.2 复合语句和空语句
5.3 声明语句
5.4 条件语句
5.5 循环
5.6 跳转
5.7 其他语句类型
5.8 JavaScript语句小结
第6章 对象
6.1 创建对象
6.2 属性的查询和设置
6.3 删除属性
6.4 检测属性
6.5 枚举属性
6.6 属性getter和setter
6.7 属性的特性
6.8 对象的三个属性
6.9 序列化对象
6.10 对象方法
第7章 数组
7.1 创建数组
7.2 数组元素的读和写
7.3 稀疏数组
7.4 数组长度
7.5 数组元素的添加和删除
7.6 数组遍历
7.7 多维数组
7.8 数组方法
7.9 ECMAScript 5中的数组方法
7.10 数组类型
7.11 类数组对象
7.12 作为数组的字符串
第8章 函数
8.1 函数定义
8.2 函数调用
8.3 函数的实参和形参
8.4 作为值的函数
8.5 作为命名空间的函数
8.6 闭包
8.7 函数属性、方法和构造函数
8.8 函数式编程
第9章 类和模块
9.1 类和原型
9.2 类和构造函数
9.3 JavaScript中Java式的类继承
9.4 类的扩充
9.5 类和类型
9.6 JavaScript中的面向对象技术
9.7 子类
9.8 ECMAScript 5 中的类
9.9 模块
第10章 正则表达式的模式匹配
10.1 正则表达式的定义
10.2 用于模式匹配的String方法
10.3 RegExp对象
第11章 JavaScript的子集和扩展
11.1 JavaScript的子集
11.2 常量和局部变量
11.3 解构赋值
11.4 迭代
11.5 函数简写
11.6 多catch 从句
11.7 E4X: ECMAScript for XML
第12章 服务器端JavaScript
12.1 用Rhino脚本化Java
12.2 用Node实现异步I/O
第二部分 客户端JavaScript
第13章 Web浏览器中的JavaScript
13.1 客户端JavaScript
13.2 在HTML里嵌入JavaScript
13.3 JavaScript程序的执行
13.4 兼容性和互用性
13.5 可访问性
13.6 安全性
13.7 客户端框架
第14章 Window对象
14.1 计时器
14.2 浏览器定位和导航
14.3 浏览历史
14.4 浏览器和屏幕信息
14.5 对话框
14.6 错误处理
14.7 作为Window对象属性的文档元素
14.8 多窗口和窗体
第15章 脚本化文档
15.1 DOM概览
15.2 选取文档元素
15.3 文档结构和遍历
15.4 属性
15.5 元素的内容
15.6 创建、插入和删除节点
15.7 例子:生成目录表
15.8 文档和元素的几何形状和滚动
15.9 HTML表单
15.10 其他文档特性
第16章 脚本化CSS
16.1 CSS概览
16.2 重要的CSS属性
16.3 脚本化内联样式
16.4 查询计算出的样式
16.5 脚本化CSS类
16.6 脚本化样式表
第17章 事件处理
17.1 事件类型
17.2 注册事件处理程序
17.3 事件处理程序的调用
17.4 文档加载事件
17.5 鼠标事件
17.6 鼠标滚轮事件
17.7 拖放事件
17.8 文本事件
17.9 键盘事件
第18章 脚本化HTTP
18.1 使用XMLHttpRequest
18.2 借助发送HTTP请求:JSONP
18.3 基于服务器端推送事件的Comet技术
第19章 jQuery类库
19.1 jQuery基础
19.2 jQuery的getter和setter
19.3 修改文档结构
19.4 使用jQuery处理事件
19.5 动画效果
19.6 jQuery中的Ajax
19.7 工具函数
19.8 jQuery选择器和选取方法
19.9 jQuery的插件扩展
19.10 jQuery UI类库
第20章 客户端存储
20.1 localStorage和sessionStorage
20.2 cookie
20.3 利用IE userData持久化数据
20.4 应用程序存储和离线Web应用
第21章 多媒体和图形编程
21.1 脚本化图片
21.2 脚本化音频和视频
21.3 SVG:可伸缩的矢量图形
21.4 中的图形
第22章 HTML5 API
22.1 地理位置
22.2 历史记录管理
22.3 跨域消息传递
22.4 Web Worker
22.5 类型化数组和ArrayBuffer
22.6 Blob
22.7 文件系统API
22.8 客户端数据库
22.9 Web套接字
第三部分 JavaScript核心参考
JavaScript核心参考
第四部分 客户端JavaScript参考
客户端JavaScript参考
第1章 JavaScript简介 1
1.1 JavaScript简史 1
1.2 JavaScript实现 2
1.2.1 ECMAScript 3
1.2.2 文档对象模型(DOM) 5
1.2.3 浏览器对象模型(BOM) 8
1.3 JavaScript版本 8
1.4 小结 9
第2章 在HTML中使用JavaScript 10
第 1章 名称 1
1.1 名称绑定 1
1.2 作用域 3
1.2.1 包块作用域与就近声明 5
1.2.2 静态作用域和动态作用域 7
1.2.3 前向引用和提升 9
1.3 闭包 10
1.4 小结 14
第 2章 类型系统 15
2.1 类型是什么 15
2.2 常用的数据类型 16
2.2.1 整数 16
2.2.2 浮点数 16
2.2.3 布尔值 17
2.2.4 字符 17
2.2.5 元组、结构体、类 17
2.2.6 函数 19
2.2.7 数组、字符串、队列、堆栈、
列表 20
2.2.8 结构体、映射 22
2.2.9 深入复合类型 23
2.3 强类型与弱类型 24
2.4 名义类型与结构类型 26
2.5 静态类型与动态类型 27
2.5.1 静态类型 27
2.5.2 动态类型 30
2.6 多态性 32
2.6.1 子类型多态性 33
2.6.2 参数多态性 35
2.7 JavaScript的类型系统 38
2.7.1 undefined和null 39
2.7.2 弱类型 43
2.7.3 变成强类型 47
2.8 鸭子类型与多态性 52
2.9 小结 53
第3章 lambda演算和函数 54
3.1 命令式编程中函数的作用 54
3.2 lambda演算 57
3.2.1 定义 57
3.2.2 记法 58
3.2.3 化约 58
3.2.4 算数 59
3.2.5 逻辑运算 61
3.2.6 函数式编程的特点 61
3.3 JavaScript中的函数 62
3.3.1 定义函数 63
3.3.2 调用函数 71
3.3.3 传递参数 71
3.3.4 模块 74
3.4 小结 75
第4章 函数是一等值 76
4.1 函数参数 76
4.1.1 数组的迭代方法 77
4.1.2 设计函数参数 78
4.2 函数返回值 81
4.2.1 判断数据类型 82
4.2.2 日志 83
4.2.3 读取对象属性 85
4.3 高阶函数 86
4.3.1 组合谓词函数 87
4.3.2 改变函数参数数目 89
4.3.3 检查参数类型 91
4.3.4 记忆化 94
4.4 小结 98
第5章 部分应用和复合 100
5.1 部分应用 100
5.2 柯里化 103
5.2.1 增强的柯里化 106
5.2.2 从右向左柯里化 108
5.2.3 进一步增强的柯里化 109
5.2.4 柯里化的性能成本 111
5.2.5 应用柯里化的方式 113
5.2.6 参数的顺序 115
5.2.7 柯里化与高阶函数 115
5.3 复合 118
5.3.1 管道与数据流 122
5.3.2 函数类型与柯里化 124
5.4 一切都是函数 126
5.4.1 操作符的函数化 127
5.4.2 方法的函数化 132
5.4.3 控制流语句的函数化 138
5.5 性能与可读性 141
5.6 小结 142
第6章 副作用和不变性 144
6.1 副作用 144
6.2 纯函数 145
6.2.1 外部变量 147
6.2.2 实现 148
6.2.3 函数内部的副作用 148
6.2.4 闭包 151
6.3 不变性 152
6.3.1 哲学上的不变性与身份 152
6.3.2 简单类型与复合类型 153
6.3.3 值类型与引用类型 154
6.3.4 可变类型与不可变类型 155
6.3.5 可变数据类型的不足之处 156
6.3.6 克隆与冻结 158
6.3.7 不可变的数据结构 163
6.3.8 不可变的映射与数组 167
6.3.9 不可变类型的其他好处 170
6.4 小结 171
第7章 递归 172
7.1 调用自身 173
7.1.1 递归的思路 176
7.1.2 带累积参数的递归函数 177
7.2 递归的数据结构 180
7.2.1 构建列表 180
7.2.2 树 184
7.3 递归与迭代 186
7.3.1 名称 186
7.3.2 理念与对比 186
7.3.3 迭代协议 189
7.3.4 递归协议 192
7.3.5 搜索树 195
7.4 尾部递归 198
7.4.1 调用堆栈 198
7.4.2 尾部调用优化 200
7.4.3 怎样算是尾部调用 201
7.4.4 尾部递归 204
7.5 递归的效率 205
7.6 小结 209
第8章 列表 211
8.1 处理列表 211
8.1.1 函数的三种写法 211
8.1.2 处理列表的高阶函数 213
8.2 函数式编程的列表接口 218
8.2.1 没有副作用的方法 219
8.2.2 有副作用的方法 220
8.2.3 列表接口中的其他函数 222
8.3 小结 225
第9章 从面向对象到函数式编程 226
9.1 面向对象编程的特点 226
9.1.1 封装性 227
9.1.2 继承性 227
9.1.3 多态性 228
9.2 JavaScript面向对象编程 232
9.2.1 创建和修改单个对象 233
9.2.2 克隆和复制属性 234
9.2.3 原型 234
9.2.4 建构函数 235
9.2.5 建构函数与类型继承 237
9.2.6 原型与类型继承 242
9.2.7 Proxy与对象继承 245
9.2.8 Mixin 248
9.2.9 工厂函数 251
9.3 函数式编程的视角 255
9.3.1 不可变的对象 256
9.3.2 评判面向对象编程 257
9.4 方法链与复合函数 260
9.4.1 方法链 260
9.4.2 延迟的方法链 264
9.4.3 复合函数 265
9.4.4 函数式的SQL 266
1.3.1 JavaScript演进 3
1.3.2 JavaScript介绍 4
1.3.3 Web页面渲染过程 5
1.3.4 Visual Studio Code介绍 6
1.3.5 Visual Studio Code快捷键 6
1.3.6 EMMET语法 9
1.3.7 Node.js介绍 10
1.3.8 http-server介绍 10
1.3.9 在HTML中使用JavaScript 11
1.3.10 高性能JavaScript 12
1.3.11 JavaScript执行顺序 12
1.3.12 脚本位置 13
1.3.13 组织脚本 13
1.3.14 无阻塞脚本 14
1.3.15 选取DOM对象 17
1.3.16 addEventListener 20
1.3.17 读写HTML DOM style对象
属性 20
1.3.18 cssText 21
1.4 任务实施 22
1.4.1 安装和配置Visual Studio Code 22
1.4.2 安装常用扩展 23
1.4.3 Chrome浏览器 24
1.4.4 Chrome开发者工具 24
1.4.5 安装Node.js 25
1.4.6 安装与配置http-server 25
1.4.7 编写HTML和CSS 25
1.4.8 编写JavaScript 27
1.4.9 测试页面 28
1.5 强化训练 28
1.6 学习成果评量 29
任务2 斑马线表格制作 30
2.1 任务导入 31
2.2 成果目标 31
2.3 核心知识 32
2.3.1 表格常用标签 32
2.3.2 表格斑马线原理 33
2.3.3 读写HTML DOM className
属性 33
2.3.4 严格模式(use strict) 34
2.3.5 定义变量 35
2.3.6 常量 35
2.3.7 变量命名规则 35
2.3.8 JavaScript语法规范 36
2.3.9 变量类型 37
2.3.10 变量作用域 38
2.3.11 避免变量污染 40
2.3.12 闭包函数 40
2.3.13 JavaScript转义字符 40
2.3.14 相等操作符 41
2.3.15 toNumber 41
2.3.16 使用typeof检测类型 42
2.3.17 使用constructor检测类型 42
2.3.18 使用toString()检测封装类型 42
2.3.19 事件委托 43
2.4 任务实施 44
2.4.1 编写HTML 44
2.4.2 编写CSS样式 46
2.4.3 编写JavaScript 47
2.4.4 测试页面 48
2.5 强化训练 49
2.6 学习成果评量 49
任务3 弹出消息框 50
3.1 任务导入 51
3.2 成果目标 51
3.3 核心知识 51
3.3.1 基于负边距的垂直居中 51
3.3.2 基于transform属性的垂直
居中 52
3.3.3 元素动画制作 53
3.3.4 警告对话框alert() 53
3.3.5 确认对话框confirm() 54
3.3.6 提示对话框prompt() 54
3.3.7 BOM介绍 54
3.3.8 window对象 54
3.3.9 location对象 55
3.3.10 screen对象 56
3.3.11 history对象 57
3.4 任务实施 57
3.4.1 编写HTML 57
3.4.2 编写CSS样式 58
3.4.3 编写JavaScript 60
3.4.4 测试页面 60
3.5 强化训练 61
3.6 学习成果评量 61
任务4 图片缩放特效 62
4.1 任务导入 63
4.2 成果目标 63
4.3 核心知识 63
4.3.1 DOM编程 63
4.3.2 DOM访问与修改 64
4.3.3 DOM遍历 64
4.3.4 innerHTML对比DOM方法 65
4.3.5 字符串连接 65
4.3.6 HTML集合length 66
4.3.7 减少浏览器重排与重绘 67
4.4 任务实施 69
4.4.1 编写页面结构 69
4.4.2 编写CSS样式 71
4.4.3 编写JavaScript 72
4.4.4 测试页面 73
4.5 强化训练 73
4.6 学习成果评量 74
任务5 网页换肤 75
5.1 任务导入 76
5.2 成果目标 76
5.3 核心知识 76
5.3.1 网页换肤原理 76
5.3.2 HTML文档对象模型 77
5.3.3 HTML DOM节点树 77
5.3.4 document对象属性和方法 78
5.3.5 element对象属性和方法 79
5.3.6 获取元素属性getAttribute() 82
5.3.7 设置元素属性setAttribute() 83
5.3.8 本地数据存储方案 83
5.3.9 WebStorage 84
5.3.10 WebStorage基本属性和
方法 84
5.3.11 使用sessionStorage对象 84
5.3.12 使用localStorage对象 86
5.3.13 使用storage事件 86
5.3.14 cookie介绍 87
5.3.15 cookie构成 87
5.3.16 写入cookie信息 88
5.3.17 读取cookie信息 90
5.4 任务实施 91
5.4.1 编写HTML 91
5.4.2 编写CSS 92
5.4.3 编写JavaScript 94
5.4.4 测试页面 95
5.5 强化训练 95
5.6 学习成果评量 95
任务6 下拉广告 96
6.1 任务导入 97
6.2 成果目标 97
6.3 核心知识 97
6.3.1 transition属性 97
6.3.2 超时调用setTimeout()方法 98
6.4 任务实施 99
6.4.1 编写HTML 99
6.4.2 编写CSS样式 100
6.4.3 编写JavaScript代码 101
6.4.4 测试页面 102
6.5 强化训练 102
6.6 学习成果评量 103
任务7 轮播图 104
7.1 任务导入 105
7.2 成果目标 105
7.3 核心知识 105
7.3.1 间歇调用setInterval() 105
7.3.2 避免常见JavaScript错误 106
7.3.3 理解Error对象 106
7.3.4 错误处理思路 107
7.3.5 使用浏览器控制台调试
程序 108
7.3.6 使用断点调试程序 109
7.3.7 使用try-catch处理异常 110
7.4 任务实施 111
7.4.1 编写HTML 111
7.4.2 编写CSS样式 113
7.4.3 编写JavaScript 116
7.4.4 测试页面 117
7.5 强化训练 117
7.6 学习成果评量 118
任务8 滚动公告 119
8.1 任务导入 120
8.2 学习成果 120
8.3 核心知识 120
8.3.1 HTML事件模型 120
8.3.2 DOM0级事件模型 121
8.3.3 DOM2级事件模型 122
8.3.4 IE事件模型 123
8.4 任务实施 124
8.4.1 编写HTML 124
8.4.2 编写CSS样式 125
8.4.3 编写JavaScript 126
8.4.4 测试页面 127
8.5 强化训练 128
8.6 学习成果评量 128
任务9 贷款计算器 129
9.1 任务导入 130
9.2 成果目标 130
9.3 核心知识 130
9.3.1 表单类型 130
9.3.2 表单结构 132
9.3.3 form对象 133
9.3.4 表单事件 134
9.3.5 表达式与操作符 135
9.3.6 转换为数字 136
9.3.7 设置小数位数 137
9.3.8 Math对象 137
9.3.9 条件语句 138
9.3.10 for循环 141
9.3.11 while循环 142
9.3.12 do-while循环 142
9.3.13 for-in循环 142
9.3.14 优化循环性能 143
9.3.15 forEach() 143
9.4 任务实施 143
9.4.1 编写HTML 143
9.4.2 编写CSS样式 145
9.4.3 编写JavaScript 147
9.4.4 测试页面 147
9.5 强化训练 148
9.6 学习成果评量 148
任务10 计算器 149
10.1 任务导入 150
10.2 成果目标 150
10.3 核心知识 150
10.3.1 函数介绍 150
10.3.2 定义函数 151
10.3.3 嵌套函数 152
10.3.4 调用函数 152
10.3.5 函数的实参和形参 155
10.3.6 将对象属性用作实参 157
10.3.7 实参类型 157
10.3.8 作为值的函数 157
10.3.9 自定义函数属性 158
10.3.10 slice() 158
10.3.11 isNaN() 158
10.4 任务实施 159
10.4.1 编写HTML 159
10.4.2 编写CSS样式 160
10.4.3 编写JavaScript 162
10.4.4 测试页面 164
10.5 强化训练 165
10.6 学习成果评量 165
任务11 投票 166
11.1 任务导入 167
11.2 成果目标 167
11.3 核心知识 167
11.3.1 匿名函数 167
11.3.2 数据存取方式 168
11.3.3 对象成员 169
11.3.4 函数作用域 170
11.3.5 闭包 171
11.3.6 闭包函数 173
11.3.7 递归函数 174
11.4 任务实施 174
11.4.1 编写HTML 174
11.4.2 编写CSS样式 175
11.4.3 编写JavaScript 176
11.4.4 测试页面 177
11.5 强化训练 177
11.6 学习成果评量 178
任务12 折叠面板 179
12.1 任务导入 180
12.2 成果目标 180
12.3 核心知识 180
12.4 任务实施 181
12.4.1 编写HTML 181
12.4.2 编写CSS 182
12.4.3 编写JavaScript 183
12.4.4 测试页面 184
12.5 强化训练 184
12.6 学习成果评量 185
任务13 银行客服电话查询 186
13.1 任务导入 187
13.2 成果目标 187
13.3 核心知识 187
13.3.1 Ajax简介 187
13.3.2 Ajax原理 188
13.3.3 HTTP请求 188
13.3.4 HTTP状态码 189
13.3.5 定义XMLHttpRequest
对象 190
13.3.6 建立XMLHttpRequest
连接 191
13.3.7 跟踪状态 192
13.3.8 中止请求 192
13.3.9 Ajax请求与响应模板 192
13.3.10 获取数据 193
13.3.11 获取纯文本 194
13.3.12 使用Ajax加载HTML 194
13.3.13 使用Ajax加载JSON 194
13.3.14 获取JavaScript脚本 194
13.3.15 使用Ajax加载其他服务器的
数据 194
13.3.16 获取头部信息 195
13.3.17 JSONP工作原理 195
13.4 任务实施 196
13.4.1 编写HTML 196
13.4.2 编写CSS样式 196
13.4.3 编写JSON 197
13.4.4 编写JavaScript 199
13.4.5 测试页面 200
13.5 强化训练 200
13.6 学习成果评量 200
任务14 省、市、区联动菜单 201
14.1 任务导入 202
14.2 成果目标 202
14.3 核心知识 202
14.3.1 下拉列表select 202
14.3.2 HTML DOM Option对象 203
14.3.3 select add()方法 203
14.3.4 JSON简介 203
14.3.5 JSON语法 204
14.3.6 JSON与XML比较 205
14.3.7 访问JSON对象值 206
14.3.8 遍历JSON对象 206
14.3.9 修改JSON值 207
14.3.10 删除对象属性 207
14.3.11 解析JSON对象 207
14.3.12 JSON.stringify() 207
14.3.13 JSON转换为JavaScript
对象 208
14.4 任务实施 208
14.4.1 编写HTML 208
14.4.2 编写CSS 209
14.4.3 JSON数据准备 210
14.4.4 编写JavaScript 211
14.4.5 测试页面 212
14.5 强化训练 213
14.6 学习成果评量 213
任务15 滚动监听 214
15.1 任务导入 215
15.2 成果目标 215
15.3 核心知识 215
15.3.1 滚动监听 215
15.3.2 CSS脚本化 215
15.3.3 访问CSS行内样式 216
15.3.4 使用styleSheets对象 217
15.3.5 计算样式 218
15.3.6 元素尺寸 220
15.3.7 window.scrollY 220
15.4 任务实施 221
15.4.1 编写HTML 221
15.4.2 编写CSS样式 222
15.4.3 编写JavaScript 223
15.4.4 测试页面 224
15.5 强化训练 224
15.6 学习成果评量 225
任务16 视频播放器 226
16.1 任务导入 227
16.2 成果目标 227
16.3 核心知识 227
16.3.1 HTML video标签 227
16.3.2 HTML音频/视频方法 228
16.3.3 HTML音频/视频属性 228
16.3.4 HTML音频/视频事件 229
16.3.5 浏览器支持的视频格式 230
16.3.6 浏览器视频能力检测 231
16.3.7 实现播放列表功能 231
16.4 任务实施 232
16.4.1 编写HTML 232
16.4.2 编写CSS样式 233
16.4.3 编写JavaScript 235
16.4.4 测试页面 236
16.5 强化训练 236
16.6 学习成果评量 236
任务17 刮刮乐 237
17.1 任务导入 238