编辑推荐
知识点全面,体系结构清晰,重点突出、文字准确,内容组织循序渐进,并有书中案例都是以*标准为基础,介绍JavaScript与jQuery的*发展,且在实际开发工作中经常碰到的问题在案例中都有体现,更贴近实用 ;
内容简介
本书从零开始讲解JavaScript与jQuery技术,全书以项目为驱动,循序渐进、案例丰富。全书共分13章,主要内容包括4个部分。*部分是概述篇,即第1章,内容主要有JavaScript与jQuery的简介、发展史和特点,以及开发工具的选择。第二部分是JavaScript技术篇,包括第2~5章的内容。这4章循序渐进地介绍了JavaScript入门、JavaScript数据类型与运算符、JavaScript语句与函数、JavaScript DOM和BOM。第三部分是jQuery技术篇,包括第6~12章的内容。这7章由浅入深地介绍了jQuery入门、jQuery选择器与过滤器、jQuery事件、jQuery特效、jQuery HTML DOM、jQuery遍历、jQuery AJAX技术。第四部分是综合篇,即第13章,其中提供了3个完整的项目实例,包括图片轮播、手动切换图片、AJAX天气预报查询功能的设计与实现,综合应用了全书所学知识,让读者所学即所用。 本书可作为高校计算机相关专业JavaScript和jQuery课程的实践教材,也可作为学习JavaScript和jQuery开发的自学教材或培训教材。
作者简介
暂无
目录
第1章 ; 绪论... 3
1.1 ; JavaScript概述... 3
1.1.1
 ; JavaScript简介... 3
1.1.2
 ; JavaScript起源... 3
1.1.3
 ; JavaScript和Java. 3
1.1.4
 ; JavaScript的特点... 4
1.2 ; jQuery概述... 4
1.2.1
 ; jQuery简介... 4
1.2.2
 ; jQuery的发展史... 4
1.2.3
 ; jQuery的特点... 5
1.2.4
 ; jQuery的版本比较... 5
1.3 ; Web开发工具... 6
1.3.1 ; A
dobe Dreamweaver 6
1.3.2
 ; Sublime Text 7
1.3.3
 ; Notepad . 7
1.3.4
 ; EditPlus 7
1.4 ; 本章小结... 8
习题1. 9
第二部分 ; JavaScript技术篇
第2章 ; ;JavaScript入门... 13
2.1 ; JavaScript的实现... 13
2.2 ; JavaScript的使用... 13
2.2.1
 ; 内部JavaScript 14
2.2.2
 ; 外部JavaScript 15
2.3 ; JavaScript的语法... 16
2.3.1
 ; JavaScript中的大小写... 16
2.3.2
 ; JavaScript中的分号... 16
2.3.3
 ; JavaScript中的注释.............................................................................. 16
2.3.4
 ; JavaScript中的代码块... 17
2.4 ; JavaScript变量... 17
2.4.1
 ; 变量的声明... 17
2.4.2
 ; 变量的命名规范... 19
2.4.3
 ; JavaScript关键字和保留字... 20
2.5 ; 本章小结... 20
习题2. 20
第3章 ; ;JavaScript数据类型与运算符... 22
3.1 ; JavaScript基本数据类型... 22
3.1.1
 ; ;Undefined类型... 22
3.1.2
 ; Null类型... 24
3.1.3
 ; String类型... 25
3.1.4
 ; Number类型... 36
3.1.5
 ; Boolean类型... 43
3.2 ; JavaScript对象类型... 44
3.2.1
 ; 本地对象... 44
3.2.2
 ; 内置对象... 54
3.2.3
 ; 宿主对象... 57
3.3 ; JavaScript类型转换... 57
3.3.1
 ; 转换成字符串... 57
3.3.2
 ; 转换成数字... 59
3.3.3
 ; 强制类型转换... 63
3.4 ; JavaScript运算符... 64
3.4.1
 ; 赋值运算符... 64
3.4.2
 ; 算术运算符... 65
3.4.3
 ; 逻辑运算符... 66
3.4.4
 ; 关系运算符... 70
3.4.5
 ; 相等性运算符... 72
3.4.6
 ; 条件运算符... 74
3.5 ; 本章小结... 74
习题3. 74
第4章 ; ;JavaScript语句与函数... 76
4.1 ; JavaScript条件语句... 76
4.1.1
 ; 几种if语句... 76
4.1.2
 ; switch语句... 78
4.2 ; JavaScript循环语句... 80
4.2.1
 ; for循环... 80
4.2.2
 ; for-in循环... 82
4.2.3
 ; while循环... 83
4.2.4
 ; do-while循环... 85
4.2.5
 ; break和continue. 86
4.3 ; JavaScript函数... 88
4.3.1
 ; 函数的基本结构... 88
4.3.2
 ; 函数的调用... 88
4.3.3
 ; 函数的返回值... 89
4.4 ; 本章小结... 91
习题4. 91
第5章 ; ;JavaScript DOM和BOM.. 92
5.1 ; 文档对象模型... 92
5.1.1
 ; 查找HTML元素... 92
5.1.2
 ; DOM HTML. 95
5.1.3
 ; DOM CSS. 98
5.1.4
 ; DOM事件... 100
5.1.5
 ; DOM节点... 102
5.2 ; 浏览器对象模型... 106
5.2.1
 ; Window对象... 106
5.2.2
 ; Screen对象... 107
5.2.3
 ; Location对象... 108
5.2.4
 ; History对象... 109
5.2.5
 ; Navigator对象... 110
5.3 ; 本章小结... 112
习题5. 112
第三部分 ; jQuery技术篇
第6章 ; ;jQuery入门... 115
6.1 ; jQuery的下载和使用... 115
6.1.1
 ; jQuery的下载... 115
6.1.2
 ; jQuery的使用... 116
6.2 ; jQuery的语法... 116
6.2.1
 ; 基础语法结构... 116
6.2.2
 ; 文档就绪函数... 116
6.2.3
jQuery名称冲突... 117
6.3 本章小结... 118
习题6. 119
第7章 jQuery选择器与过滤器... 120
7.1 jQuery选择器... 120
7.1.1
基础选择器... 120
7.1.2
属性选择器... 128
7.1.3
表单选择器... 129
7.1.4
层次选择器... 132
7.1.5
jQuery CSS选择器... 138
7.2 jQuery过滤器... 140
7.2.1
基础过滤器... 140
7.2.2
子元素过滤器... 147
7.2.3
内容过滤器... 155
7.2.4
可见性过滤器... 161
7.3 本章小结... 165
习题7. 165
第8章 jQuery事件... 166
8.1 jQuery事件概述... 166
8.1.1
事件的含义... 166
8.1.2
jQuery事件的语法格式... 166
8.2 常用jQuery事件... 167
8.2.1
文档/窗口事件... 167
8.2.2
键盘事件... 172
8.2.3
鼠标事件... 175
8.2.4
表单事件... 186
8.3 jQuery事件的绑定与解除... 193
8.3.1
jQuery事件的绑定... 193
8.3.2
jQuery事件的解除... 197
8.3.3
jQuery临时事件... 201
8.4 本章小结... 202
习题8. 203
第9章 jQuery特效... 204
9.1 jQuery隐藏和显示... 204
9.1.1
jQuery hide() 204
9.1.2
jQuery show() 205
9.1.3
jQuery toggle() 207
9.2 jQuery淡入和淡出... 208
9.2.1
jQuery fadeIn() 208
9.2.2
jQuery fadeOut() 209
9.2.3
jQuery fadeToggle() 211
9.2.4
jQuery fadeTo() 213
9.3 jQuery滑动... 216
9.3.1
jQuery slideDown() 216
9.3.2
jQuery slideUp() 216
9.3.3
jQuery slideToggle() 219
9.4 jQuery动画... 220
9.4.1
改变元素的基本属性... 221
9.4.2
改变元素的位置... 223
9.4.3
动画队列... 225
9.5 jQuery方法链接... 227
9.6 jQuery停止动画... 229
9.7 本章小结... 232
习题9. 232
第10章 jQuery HTML DOM.. 233
10.1 jQuery获取和设置... 233
10.1.1
jQuery text() 233
10.1.2
jQuery html() 236
10.1.3
jQuery val() 238
10.1.4
jQuery attr() 239
10.1.5
jQuery css() 241
10.2 jQuery添加... 244
10.2.1
jQuery append()和prepend() 244
10.2.2
jQuery after()和before() 248
10.3 jQuery删除... 251
10.3.1
jQuery remove() 251
10.3.2
jQuery empty() 253
10.3.3
jQuery removeAttr() 255
10.4 jQuery类属性... 256
10.4.1
jQuery addClass() 257
10.4.2
jQuery removeClass() 257
10.4.3
jQuery toggleClass() 259
10.5 jQuery尺寸... 261
10.6 本章小结... 264
习题10. 264
第11章 jQuery遍历... 265
11.1 HTML家族树简介... 265
11.2 jQuery后代遍历... 266
11.2.1
jQuery children() 266
11.2.2
jQuery find() 268
11.3 jQuery同胞遍历... 270
11.3.1
jQuery siblings() 270
11.3.2
jQuery next()、nextAll()和nextUntil() 272
11.3.3
jQuery prev()、prevAll()和prevUntil() 276
11.4 jQuery祖先遍历... 280
11.4.1
jQuery parent() 280
11.4.2
jQuery parents() 282
11.4.3
jQuery parentsUntil() 284
11.5 本章小结... 286
习题11. 286
第12章 jQuery AJAX技术... 288
12.1 jQuery AJAX简介... 288
12.1.1
什么是AJAX.. 288
12.1.2
jQuery
AJAX
.. 288
12.2 jQuery AJAX常用方法... 289
12.2.1
jQuery AJAX load()方法... 289
12.2.2
jQuery AJAX get()方法... 293
12.2.3
jQuery AJAX post()方法... 295
12.2.4
jQuery AJAX ajax()方法... 298
12.2.5
jQuery AJAX更多方法介绍... 302
12.3 jQuery AJAX事件... 303
12.4 本章小结... 304
习题12. 305
第四部分 综合篇
第13章 综合应用设计实例... 309
13.1 jQuery图片轮播特效的设计与实现... 309
13.1.1
界面设计... 309
13.1.2
图片轮播特效的实现... 316
13.1.3
完整代码展示... 318
13.2 jQuery手动切换图片的设计与实现... 322
13.2.1
界面设计... 322
13.2.2
图片切换特效的实现... 325
13.2.3
完整代码展示... 327
13.3 jQuery AJAX天气预报查询的设计与实现... 329
13.3.1
准备工作... 330
13.3.2
界面设计... 334
13.3.3
天气预报查询的实现... 342
13.3.4
完整代码展示... 345
本章小结... 350
附录 课后习题参考答案... 351
参考文献..................................................................................................................... 362
前沿
JavaScript和HTML、CSS一起被称为“Web前端开发的三大技术”,该技术目前几乎被所有的主流浏览器支持,也应用于市面上绝大部分网站中。随着JavaScript的广泛使用,基于JavaScript的框架也层出不穷。jQuery是JavaScript框架中的优秀代表,也是目前网络上使用范围最广泛的JavaScript函数库。
本书从零开始讲解JavaScript与jQuery技术,全书以项目为驱动,循序渐进、案例丰富,既可作为JavaScript、jQuery初学者的入门教程,也可为具有一定Web前端基础的读者进一步学习提供参考。
全书分13章,主要内容包括以下4个部分。
第一部分是概述篇,即第1章,内容主要有JavaScript与jQuery的简介、发展史和特点,以及开发工具的选择。
第二部分是JavaScript技术篇,包括第2~5章的内容。这4章循序渐进地介绍了JavaScript入门、JavaScript数据类型与运算符、JavaScript语句与函数、JavaScript DOM和BOM。
第三部分是jQuery技术篇,包括第6~12章的内容。这7章由浅入深地介绍了jQuery入门、jQuery选择器与过滤器、jQuery事件、jQuery特效、jQuery HTML DOM、jQuery遍历、jQuery AJAX技术。
第四部分是综合篇,即第13章,其中提供了3个完整的项目实例,包括图片轮播、手动切换图片、AJAX天气预报查询功能的设计与实现,综合应用了全书所学知识,让读者所学即所用。
本书精选的相关例题共136个,均在浏览器中调试通过。考虑到旧版浏览器的兼容性,本书选用的jQuery版本为
1.12.3
本书还提供了电子资源供读者下载,包括例题源代码、课后习题答案、教学PPT与教学大纲。
最后,在此郑重感谢清华大学出版社的魏江江主任为本书的出版所付出的辛勤劳动,特别感谢敬爱的周泉先生和任萱女士对本书的出版给予的倾力帮助,感谢家人和朋友们给予的关心和鼓励,同时也要感谢我的丈夫刘嵩先生多年来对我的工作的一贯支持。
愿本书能够对读者学习Web前端新技术有所帮助,并真诚地欢迎读者批评指正。希望能与读者朋友们共同学习成长,在浩瀚的技术之海不断前行。
作 者
2018年3月
免费在线读
JavaScript数据类型与运算符绪论本章主要内容是JavaScript数据类型与运算符,主要包括基本数据类型、对象、类型转换、运算符的用法。
本章是全书的绪论部分,主要介绍JavaScript、jQuery概述以及Web开发工具的选择。JavaScript和HTML、CSS一起被称为“Web前端开发的三大技术”,当今所有的浏览器都支持JavaScript,无须额外安装第三方插件;而jQuery是一个轻量级的跨平台JavaScript函数库,它化简了JavaScript代码的复杂度,其语法能让用户更方便地选取和操作HTML元素、处理各类事件、实现JavaScript特效与动画,并且能为不同类型的浏览器提供更便捷的API用于AJAX交互。
本章学习目标:
掌握JavaScript的基本数据类型与对象类型;
掌握JavaScript类型转换方法;
· 掌握JavaScript运算符的使用。了解JavaScript的概念与特点;
· 了解jQuery的概念与特点;
掌握任意一款Web开发工具。
13.1 JavaScript基本数据类型JavaScript概述
1.1.1 JavaScript简介JavaScript是一种轻量级的直译式编程语言,基于ECMAScript标准(注:一种由ECMA国际组织通过ECMA-262标准化的脚本程序语言)。通常在HTML网页中使用JavaScript为页面增加动态效果和功能。JavaScript和HTML、CSS一起被称为“Web前端开发的三大技术”,目前JavaScript已经广泛应用于Web开发,市面上绝大多数网页都使用了JavaScript代码,可以说当今所有的浏览器都支持JavaScript,无须额外安装第三方插件。
1.1.2 JavaScript起源JavaScript最早是在1995年由网景(Netscape)公司的BrendanEich用了十天时间开发出来的,用于当时的网景导航者(NetscapeNavigator)浏览器2.0版。最初这种脚本语言的官方名称为LiveScript,后来应用于网景导航者浏览器2.0B3版的时候正式更名为JavaScript。更名的原因是因为当时网景公司与Sun公司开展了合作,网景公司的管理层希望在他们的浏览器中增加对Java技术的支持。此名称容易让人误以为该脚本语言是和Java语言有关,但实际上该语言的语法风格与Scheme更为接近。
JavaScript数据类型与运算符绪论
本章主要内容是JavaScript数据类型与运算符,主要包括基本数据类型、对象、类型转换、运算符的用法。
本章是全书的绪论部分,主要介绍JavaScript、jQuery概述以及Web开发工具的选择。JavaScript和HTML、CSS一起被称为“Web前端开发的三大技术”,当今所有的浏览器都支持JavaScript,无须额外安装第三方插件;而jQuery是一个轻量级的跨平台JavaScript函数库,它化简了JavaScript代码的复杂度,其语法能让用户更方便地选取和操作HTML元素、处理各类事件、实现JavaScript特效与动画,并且能为不同类型的浏览器提供更便捷的API用于AJAX交互。
本章学习目标:
- 掌握JavaScript的基本数据类型与对象类型;
- 掌握JavaScript类型转换方法;
·掌握JavaScript运算符的使用。了解JavaScript的概念与特点;·了解jQuery的概念与特点;掌握任意一款Web开发工具。
13.1 JavaScript基本数据类型JavaScript概述
1.1.1 JavaScript简介
JavaScript是一种轻量级的直译式编程语言,基于ECMAScript标准(注:一种由ECMA国际组织通过ECMA-262标准化的脚本程序语言)。通常在HTML网页中使用JavaScript为页面增加动态效果和功能。JavaScript和HTML、CSS一起被称为“Web前端开发的三大技术”,目前JavaScript已经广泛应用于Web开发,市面上绝大多数网页都使用了JavaScript代码,可以说当今所有的浏览器都支持JavaScript,无须额外安装第三方插件。
1.1.2 JavaScript起源
JavaScript最早是在1995年由网景(Netscape)公司的BrendanEich用了十天时间开发出来的,用于当时的网景导航者(NetscapeNavigator)浏览器2.0版。最初这种脚本语言的官方名称为LiveScript,后来应用于网景导航者浏览器2.0B3版的时候正式更名为JavaScript。更名的原因是因为当时网景公司与Sun公司开展了合作,网景公司的管理层希望在他们的浏览器中增加对Java技术的支持。此名称容易让人误以为该脚本语言是和Java语言有关,但实际上该语言的语法风格与Scheme更为接近。
1.1.3 JavaScript和Java
因为名称相近,JavaScript常被误以为和Java有关,但事实上它们无论从概念还是从设计都是毫无关联的两种语言。JavaScript是Netscape公司的BrendanEich发明的一种轻量级语言,主要应用于网页开发,无须事先编译;而Java是由Sun公司的JamesGosling发明的一种面向对象程序语言,根据应用方向又可分为J2SE(Java2标准版)、J2ME(Java2微型版)和J2EE(Java2企业版)3个版本,需要先编译再执行。JavaScript是为了让非程序开发者快速上手使用的语言,而Java是更高级、更复杂的一种面向专业程序开发者的语言,比JavaScript的难度大、应用范围更广。
1.1.4 JavaScript的特点
1.脚本语言
JavaScript是一种直译式的脚本语言,无须事先编译,可以在程序运行的过程中逐行解释使用。该语言适合非程序开发人员使用。
2.简单性
JavaScript具有非常简单的语法,其脚本程序面向非程序开发人员。HTML前端开发者都有能力为网页添加JavaScript片段。
3.弱类型
JavaScript无需定义变量的类型,所有变量的声明都可以用统一的类型关键词表示。在运行过程中,JavaScript会根据变量的值判断其实际类型。
4.跨平台性
JavaScript语言是一种Web程序开发语言,它只与浏览器的支持情况有关,与操作系统的平台类型无关。目前,JavaScript可以在无须安装第三方插件的情况下被大多数主流浏览器完全支持,因此JavaScript程序在编写后可以在不同类型的操作系统中运行,适用于个人计算机、笔记本式计算机、平板式计算机和手机等各类包含浏览器的设备。
5.大小写敏感
JavaScript语言是一种大小写敏感的语言,例如字母a和A会被认为是不同的内容。同样,在使用函数时也必须严格遵守大小写的要求使用正确的方法名称。
1.2 jQuery概述
1.2.1 jQuery简介
jQuery这个名称来源于JavaScript和Query(查询)的组合,是一个轻量级的跨平台JavaScript函数库,拥有MIT软件许可协议。目前,主流浏览器基本上都支持jQuery。jQuery秉承“write less,do more(写的更少,做的更多)”的核心理念,其语法能让用户更方便地选取和操作HTML元素、处理各类事件、实现JavaScript特效与动画,并且能为不同类型的浏览器提供更便捷的API用于AJAX交互。jQuery也能让开发者基于JavaScript函数库开发新的插件。jQuery通用性和可扩展性相结合,它的出现将改变人们对JavaScript的使用方式。
1.2.2 jQuery的发展史
jQuery最早是在2006年1月由一位美国的软件工程师John Resing在纽约BarCamp(注:一种国际研讨会网络,由参与者互相分享Web技术)上发布的,John Resing既是jQuery的创造者,也是jQuery JavaScript函数库的核心开发者。最初的jQuery 1.0版正式发布于2006年4月26日,经历多次升级,2017年3月发布的jQuery 3.2.1版为当前的最新版本。目前,jQuery由Timmy Willison所领导的开发团队负责进行维护。
截止到2015年,jQuery已成为网络上使用范围最广泛的JavaScript函数库。根据Libscore(注:一个在线JavaScript函数库收集统计平台,通过网络爬虫跟踪抓取流量排名最高的前一百万个网站上的JavaScript函数库并统计排名)的最新统计数据得出结论,目前流量排名最高的百万个网页中超过69%都在使用jQuery(如图1-1所示),其中比较著名的网站有百度、腾讯、淘宝、新浪、Twitter、eBay、Linkedln等。
图1-1 jQuery在最流行的百万个网站中的使用情况
(数据来源:Libscore,2017年10月4日)
1.2.3 jQuery的特点
1.轻量级封装
网页使用jQuery所需要引用的JS文件只有32KB左右,几乎不会影响页面的加载 速度。
2.化简JavaScript
jQuery的选择器化简了JavaScript查找DOM对象的代码复杂度,基本上只需要一行代码就可以查找各种HTML元素或更改指定元素的CSS样式。
3.兼容CSS3
兼容CSS3的选择器语法规则,可以根据元素的样式快速查找HTML元素。
4.跨浏览器支持
jQuery支持目前所有的主流浏览器,例如IE、Firefox、Safari、Opera、Chrome等,因此开发者不用担心浏览器的兼容性问题。
1.2.4 jQuery的版本比较
目前jQuery共有3种版本,解释如下。
·jQuery 1.x版本:该版本是使用最为广泛的jQuery版本,适用于绝大多数Web前端项目开发,兼容性较高。该版本未来不会再增加新的功能,官网只做BUG维护。其最终版为2016年5月发布的jQuery 1.12.4版。·jQuery 2.x版本:
该版本与之前的1.x系列有一样的API,但是不支持IE6~IE8,因此使用人数相对较少。该版本未来同样不会再增加新的功能,官网只做BUG维护。其最终版为2016年5月发布的jQuery 2.2.4版。由于IE8目前仍然比较普及,建议用户下载1.x系列。除非能确保没有任何用户使用IE6~IE8版本来访问程序,再去使用2.x系列版本。
·jQuery 3.x版本:
该版本是目前最新的jQuery版本,最近一次是在2017年3月发布的jQuery 3.2.1版。该版本只支持IE9 、Opera最新版,以及其他主流浏览器的最新版及前一版。
需要注意的是,如果需要兼容IE6~IE8、Opera 12.1x或者Safari 5.1等旧版本的浏览器,官方建议使用jQuery 1.12.x。
1.3 Web开发工具
JavaScript和jQuery源代码文件均为纯文本内容使用,计算机操作系统中自带的写字板或记事本工具就可以打开和编辑源代码内容,因此本书不对开发工具作特定要求,使用任意一款纯文本编辑器均可以进行网页内容的编写。这里介绍几款常用的网页开发工具软件,例如Adobe Dreamweaver、Sublime Text、Notepad 和EditPlus。
1.3.1 AdobeDreamweaver
Adobe Dreamweaver是一款所见即所得的网页编辑器,中文名称为“梦想编织者”或 “织梦”。该软件最初的1.0版是在1997年由美国的Macromedia公司发布的,后来该公司于2005年被Adobe公司收购。Dreamweaver也是当时第一套针对专业Web前端工程师所设计的可视化网页开发工具,整合了网页开发与网站管理的功能。
Dreamweaver支持HTML5/CSS3源代码的编辑和预览功能,最大的优点是可视化性能带来的直观效果,开发界面可以分屏为代码部分和预览视图(如图1-2所示),在开发者修改代码部分时预览视图会随着修改内容实时变化。
图1-2 Dreamweaver可视化开发界面
Dreamweaver也有它的弱点,由于不同浏览器存在兼容性问题,Dreamweaver的预览视图难以达到与所有浏览器完全一致的效果。如需考虑跨浏览器兼容问题,预览画面仅能作为辅助参考。
1.3.2 Sublime Text
Sublime Text的界面布局非常有特色,它支持文件夹导航图和代码缩略图效果(如图1-3所示)。该软件支持多种编程语言的语法高亮显示,也具有代码自动完成提示功能。该软件还具有自动恢复功能,如果在编程过程中意外退出,在下次启动该软件时文件会自动恢复关闭之前的编辑状态。
图1-3 Sublime Text开发界面
1.3.3 Notepad
Notepad 的名称来源于Windows系列操作系统自带的记事本Notepad,在此基础上多了两个加号,立刻带了质的飞越。这是一款免费开源的纯文本编辑器(如图1-4所示),具有完整中文化接口并支持UTF-8技术。由于它具有语法高亮显示、代码折叠等功能,因此也非常适合作为计算机程序的编辑器。
图1-4 Notepad 开发界面
1.3.4 EditPlus
EditPlus是由韩国的Sangil Kim(ES-Computing)公司发布的一款文字编辑器,支持HTML、CSS、JavaScript、PHP、Java等多种计算机程序的语法高亮显示与代码折叠功能。其中最具特色的是EditPlus具有自动完成功能,例如在CSS源文件中输入字母b加上空格就会自动生成border:1px solid red语句(如图1-5所示)。开发者可以自行编辑快捷键所代表的代码块,然后在开发过程中使用快捷方式让EditPlus自动完成指定代码内容。
图1-5 EditPlus开发界面
1.4 本章小结
本章首先介绍了JavaScript基础知识,包括JavaScript简介、起源、JavaScript与Java的不同之处以及JavaScript的特点;其次详细介绍了jQuery背景知识,包括jQuery简介、发展史和特点;最后介绍了4款Web开发工具,分别是Adobe Dreamweaver、Sublime Text、Notepad 以及EditPlus。
习题1
什么是JavaScript?它有哪些特点?
JavaScript与哪两个技术被称为“Web前端开发的三大技术”?
什么是jQuery?它有哪些特点?
jQuery有哪几类版本?如果需要兼容旧版本浏览器(例如IE6~IE8),选择哪个版本更好?
第2章 JavaScript入门
本章主要内容是JavaScript基础知识,包括JavaScript的实现原理、使用方式、语法规则,以及变量的声明与命名规范等内容。
本章学习目标:
l 了解完整JavaScript实现的组成部分;
l 掌握JavaScript的使用方式;
l 掌握JavaScript的基本语法规则;
l 掌握JavaScript的变量声明与命名规范。
2.1 JavaScript的实现
JavaScript有5种原始类型,分别是Number(数字)、Boolean(布尔值)、String(字符串)、Null(空值)和Undefined(未定义)。
JavaScript提供了typeof方法用于检测变量的数据类型,该方法会根据变量本身的数据类型给出对应名称的返回值。其语法格式如下。
typeof 变量名称 |
对于指定的变量使用typeof方法,其返回值是提示数据类型的文本内容,常见5种情况,如表3-1所示。
表3-1 typeof方法的常见返回值一览表
返 回 值 |
示 例 |
解 释 |
undefined |
var x; alert(x); |
该变量未赋值 |
boolean |
var x = true; alert(x); |
该变量为布尔值 |
string |
var x = "Hello"; alert(x); |
该变量为字符串 |
number |
var x = 3.14; alert(x); |
该变量为数值 |
object |
var x = null; alert(x); |
该变量为空值或对象 |
3.1.1
Undefined类型
3.1.1
所有Undefined类型的输出值都是undefined。若需要输出的变量从未声明过,或者使用关键字var声明过但是从未进行赋值,此时会显示undefined字样。例如:
alert(y); //返回值为undefined,因为变量y之前从未使用关键字var进行声明 或 var x; alert(x); //返回值也是undefined,因为未给变量x赋值 |
【例3-1】 JavaScript基础数据类型Undefined的简单应用
1. 2. 3. 4. 5. 6. 7. 8. JavaScript变量之Undefined类型9. 10. <script> 11. //声明变量msg 12. var msg; 13. //在alert()方法中使用变量msg 14. alert(msg); 15. 16. 17. |
运行效果如图3-1所示。
图3-1 JavaScript基础数据类型Undefined的简单应用效果
【代码说明】
本例使用关键字var声明了变量msg,但未对其进行初始赋值就直接使用alert(msg)方法要求在对话框中显示该变量内容。由图3-1可见,此时显示出来的结果为undefined。
3.1.2
Null类型
3.1.2
null值表示变量的内容为空,可用于初始化变量,或者清空已经赋值的变量。例如:
var x=99; x=null; alert(x); //此时返回的值是null而不是99 |
【例3-2】 JavaScript基础数据类型Null的简单应用
1. 2. 3. 4. 5. 6. 7. 8. JavaScript变量之Null类型9. 10. <script> 11. //声明变量msg 12. var msg=99; 13. //将变量msg赋值为null 14. msg=null; 15. //在alert()方法中使用变量msg 16. alert(msg); 17. 18. 19. |
运行效果如图3-2所示。
图3-2 JavaScript基础数据类型Null的简单应用效果
【代码说明】
本例使用关键字var声明了变量msg并将其赋值为null,然后使用alert(msg)方法要求在对话框中显示该变量内容。由图3-2可见,此时显示出来的结果为null。
3.1.3
String类型
3.1.3
在JavaScript中String类型用于存储文本内容,又称为字符串类型。在为变量进行字符串赋值时需要使用引号(单引号或双引号均可)括住文本内容。例如:
var country= 或 var country=" |
与JavaScript不同的是,在Java中使用单引号声明单个字符、使用双引号声明字符串,而在JavaScript中没有区分单个字符和字符串,因此两种声明方式任选一种都是有效的。
如果字符串内容本身也需要带上引号,则用于包围字符串的引号不可以和文本内容中的引号相同。如果字符串本身带有双引号,则使用单引号包围字符串,反之亦然。例如:
var dialog=Today is a gift, that is why it is called "Present".; 或 var dialog="Today is a gift, that is why it is called Present. "; |
此时字符串内部的引号会默认保留字面的样式。
String对象中包含了一系列方法,常用方法如表3-2所示。
表3-2 JavaScript String对象常见方法一览表
方 法 名 |
解 释 |
charAt() |
返回指定位置上的字符 |
charCodeAt() |
返回指定位置上的字符的Unicode编码 |
concat() |
连接字符串 |
indexOf() |
正序检索字符串中指定内容的位置 |
lastIndexOf() |
倒序检索字符串中指定内容的位置 |
match() |
返回匹配正则表达式的所有字符串 |
replace() |
替换字符串中匹配正则表达式的指定内容 |
search() |
返回匹配正则表达式的索引值 |
slice() |
根据指定位置节选字符串片段 |
split() |
把字符串分割成字符串数组 |
substring() |
根据指定位置节选字符串片段 |
toLowerCase() |
将字符串中的所有字母都转换为小写 |
toUpperCase() |
将字符串中的所有字母都转换为大写 |
1.字符串长度
在字符串中每一个字符都有固定的位置,其位置从左往右进行分配。这里以单词HELLO为例,其位置规则如图3-3所示。
图3-3 字符位置对照图
首字符H从位置0开始,第2个字符L是位置1,以此类推,直到最后一个字符O的位置是字符串的总长度减1。
用户可以使用String对象的属性length获取字符串的长度。例如:
var s="Hello"; var slen=s.length; //返回值是变量s的字符串长度,即5 |
【例3-3】 JavaScript获取字符串长度的简单应用
1. 2. 3. 4. 5. 6. 7. 8. JavaScript获取字符串长度9. 10. <script> 11. //声明变量msg 12. var msg="Hello JavaScript!"; 13. //获取字符串长度 14. var len=msg.length; 15. alert("Hello JavaScript!的字符串长度为:" len); 16. 17. 18. |
运行效果如图3-4所示。
图3-4 JavaScript获取字符串长度的简单应用效果
【代码说明】
本例使用关键字var声明了变量msg并将其赋值为"Hello JavaScript!",然后使用字符串类型的length属性获取其字符长度并使用alert()方法显示出来。由图3-4可见,此时显示出来的结果为17,因为空格和感叹号各算1个字符位置,所以总长度为5 1 10 1=17。
2.获取字符串中的单个字符
在JavaScript中可以使用charAt()方法获取字符串指定位置上的单个字符,其语法结构如下。
charAt(index) |
其中,index处填写需要获取的字符所在位置。
例如:
var msg="Hello JavaScript"; var x=msg.charAt(0); //表示获取msg中的第1个字符,返回值为H |
如果需要获取指定位置上单个字符的字符代码,可以使用charCodeAt()方法,其语法结构如下。
charCodeAt(index) |
其中,index处填写需要获取的字符所在位置。
例如:
var msg="Hello JavaScript"; var x=msg.charCodeAt(0); //表示获取msg中的第1个字符的字符代码,返回值为72 |
【例3-4】 JavaScript获取字符串中单个字符的应用
1. 2. 3. 4. 5. 6. 7. 8. JavaScript获取字符串中的单个字符9. 10. <script> 11. //声明变量msg 12. var msg="Hello JavaScript"; 13. //获取字符串中的单个字符 14. var letter=msg.charAt(10); 15. //获取字符串中单个字符的代码 16. var code=msg.charCodeAt(10); 17. alert("Hello JavaScript在第10位上的字符为:" letter " 码为:" code); 18. 19. 20. |
运行效果如图3-5所示。
图3-5 JavaScript获取字符串中单个字符的应用效果
【代码说明】
本例使用关键字var声明了变量msg并将其赋值为"Hello JavaScript",然后使用字符串类型的charAt()方法获取其中第10位上的字符,并且用charCodeAt()方法获取该字符的代码,最后用alert()方法将结果显示出来。由图3-5可见,此时显示出来的结果为S,其对应的字符代码为83。alert()方法中的
为转义字符,表示换行。
3.连接字符串
在JavaScript中可以使用concat()方法将新的字符串内容连接到原始字符串上,其语法结构如下。
concat(string1, string2,...,stringN); |
该方法允许带有一个或多个参数,表示按照从左往右的顺序依次连接这些字符串。
例如:
var msg="Hello"; var newMsg=msg.concat(" JavaScript"); alert(newMsg); //返回值为"Hello JavaScript" |
用户也可以直接使用加号( )进行字符串的连接,其效果相同,上述代码可改为 如下。
var msg="Hello"; var newMsg=msg " JavaScript"; alert(newMsg); //返回值为"Hello JavaScript" |
【例3-5】 JavaScript连接字符串的简单应用
1. 2. 3. 4. 5. 6. 7. 8. JavaScript连接字符串9. 10. <script> 11. //声明变量s1、s2、s3 12. var s1="Hello"; 13. var s2="Java"; 14. var s3="Script"; 15. //连接字符串 16. var msg=s1.concat(s2, s3); 17. alert(msg); 18. 19. 20. |
运行效果如图3-6所示。
图3-6 JavaScript连接字符串的简单应用效果
【代码说明】
本例在JavaScript中首先声明了3个字符串变量,即s1、s2和s3,然后对s1使用concat()方法连接s2和s3形成新的变量msg,最后使用alert()语句测试输出变量msg的效果。由图3-6可见,变量msg为变量s1、s2和s3的连接。
本例也可以直接使用加号( )连接3个变量实现同样的效果,写成var msg = s1 s2 s3。注意使用concat()方法只会连接形成新的返回值,不会影响变量s1的初始内容。
4.查找字符串是否存在
使用indexOf()和lastIndexOf()方法可以查找原始字符串中是否包含指定的字符串内容,其语法格式如下。
indexOf(searchString, startIndex) 或 lastIndexOf(searchString, startIndex) |
其中,searchString参数位置填入需要用于对比查找的字符串片段,startIndex参数用于指定搜索的起始字符,该参数内容如果省略则按照默认顺序搜索全文。
indexOf()和lastIndexOf()方法都可以用于查找指定内容是否存在,如果存在,其返回值为指定内容在原始字符串中的位置序号;如果不存在,则直接返回-1。它们的区别在于indexOf()是从序号0的位置开始正序检索字符串内容,而lastIndexOf()是从序号最大值的位置开始倒序检索字符串内容。
【例3-6】 JavaScript检测字符串是否存在的简单应用
分别使用indexOf()与lastIndexOf()方法查找字符串中是否包含指定的字母。
1. 2. 3. 4. 5. 6. 7. 8. JavaScript检测字符串是否存在9. 10. 查找字母y在字符串"Happy Birthday"中的位置 11. <script> 12. //声明变量msg 13. var msg="Happy Birthday"; 14. //检测字符y存在的位置(正序) 15. var firstY=msg.indexOf("y"); 16. //检测字符y存在的位置(倒序) 17. var lastY=msg.lastIndexOf("y"); 18. alert(indexOf("y"): firstY \nlastIndexOf("y"): lastY); 19. 20. 21. |
运行效果如图3-7所示。
图3-7 JavaScript检测字符串是否存在的简单应用效果
【代码说明】
本例在JavaScript中声明了变量msg作为测试样例,并检测其中字母y存在的位置,分别使用indexOf()和lastIndexOf()方法进行正序和倒序检测并获取返回值,最后使用alert()方法输出返回结果。
由图3-7可见,对于同一个字母y使用indexOf()和lastIndexOf()方法获取位置的结果不同,正序查找的结果为4,倒序查找的结果为13。原因是原字符串msg中包含了不止一个字母y,而这两个方法会返回在字符串中查找到的第1个符合条件的字符位置,因此结果不同。需要注意的是,JavaScript是大小写敏感的脚本语言,因此如果本例查找大写字母Y会获取返回值-1,表示该字符不存在。
5.查找与替换字符串
在JavaScript中使用match()、search()方法可以查找匹配正则表达式的字符串内容。
match()方法的语法格式如下。
match(regExp) |
在参数regExp的位置需要填入一个正则表达式,例如match(/a/g)表示全局查找字母a,后面的小写字母g是英文单词gobal的首字母简写,表示全局查找,其返回值为符合条件的所有字符串片段。关于正则表达式的更多用法,读者可查阅本章3.2节中的相关内容。
search()方法的语法格式如下。
search(regExp) |
在参数regExp的位置同样需要填入一个正则表达式,不同之处在于search()方法的返回值是符合匹配条件的字符串索引值。
在JavaScript中使用replace()方法可以替换匹配正则表达式的字符串内容。
replace()方法的语法格式如下。
replace(regExp, replaceText) |
在参数regExp的位置需要填入一个正则表达式,在参数replaceText的位置填入需要替换的新的文本内容。例如replace(/a/g,"A")表示把所有的小写字母a都替换为大写形式。该方法的返回值是已经替换完毕的新字符串内容。
【例3-7】 JavaScript查找与替换字符串
分别使用match()、search()与replace()方法查找与替换字符串。
1. 2. 3. 4. 5. 6. 7. 8. JavaScript查找与替换字符串9. 10. 用于查找和替换的字符串为"Happy New Year 2016" 11. <script> 12. //声明变量msg 13. var msg="Happy New Year 2016"; 14. //检测字符y是否存在 15. var result1=msg.search(/y/); 16. //全局查找数字 17. var result2=msg.match(/d/g); 18. //将小写字母a全部替换为大写字母A 19. var result3=msg.replace(/a/g,"A"); 20. alert(search(/y/g): result1 \nmatch(/\d/g): result2 \nreplace(/a/g,"A"): result3); 21. 22. 23. |
运行效果如图3-8所示。
图3-8 JavaScript查找与替换字符串
【代码说明】
本例在JavaScript中声明了变量msg作为测试样例,分别使用match()、search()与replace()方法查找和替换字符串,最后使用alert()方法输出全部的返回结果。
由图3-8可见,search()方法可获取指定内容的所在索引位置,而match()方法是把符合条件的所有字符串以逗号隔开的形式全部展现出来。其中,d表示数字0~9的任意一个字符,/g表示全局查找。replace()方法将原字符串中所有的小写字母a均替换成大写字母的形式。如果没有加全局字符g,则只会替换其中第1个小写字母a。
6.获取字符串片段
在JavaScript中可以对字符串类型的变量使用slice()和substring()方法截取其中的字符串片段,slice()方法用于去掉指定片段,substring()方法用于节选指定片段。
slice ()方法的语法格式如下。
slice(start, end) |
其中,start参数位置填写需要删除的字符串的第1个字符位置,end参数位置填写需要删除字符串的结束位置(不包括该位置上的字符),如果end参数省略,则默认填入字符串长度。如果填入的属性值为负数,表示从字符串的最后一个位置开始计算,例如-1表示倒数第1个字符。
substring()方法的语法格式如下。
substring(start, end) |
与slice()方法的语法结构类似,其中start参数位置填写需要节选的字符串的第1个字符位置,end参数位置填写需要节选字符串的结束位置(不包括该位置上的字符)。同样,如果end参数省略,则默认填入字符串长度。
当参数均为非负数时,substring()与slice()方法获取的结果完全一样,只有当参数值存在负数情况时这两个方法才会有所不同:substring()方法会忽略负数,直接将其当作0来处理;而slice()方法会用字符串长度加上该负数值,计算出对应的位置。
例如:
var msg="happy"; //该字符串长度为5位 var result1=msg.substring(1, -1); //返回值为h var result2=slice(1, -1); //返回值为app |
其中,substring(1, -1)会忽略负数,直接当作0来对待,因此实际运行的是substring(1, 0)方法。由于此时结束位置比开始位置靠前,JavaScript会自动对调位置转换成substring(0, 1)方法,最终获得返回值h;而slice(1,-1)会将负数加上字符串长度换算成slice(1,4)方法,因此最终获得返回值app。
【例3-8】 JavaScript获取字符串片段的简单应用
分别使用substring()与slice()方法获取字符串片段。
1. 2. 3. 4. 5. 6. 7. 8. JavaScript获取字符串片段9. 10. 分别使用substring()和slice()方法节选字符串"Happy Birthday" 11. <script> 12. //声明变量msg 13. var msg="Happy Birthday"; 14. //使用substring节选指定位置范围的字符串 15. var result1=msg.substring(0,5); 16. //使用slice节选指定位置范围的字符串 17. var result2=msg.slice(0,-9); 18. alert(substring(0,5): result1 \nslice(0,-9): result2); 19. 20. 21. |
运行效果如图3-9所示。
图3-9 JavaScript获取字符串片段的简单应用效果
【代码说明】
本例在JavaScript中声明了变量msg作为字符串测试样例,其中字符串内容为"Happy Birthday",共计14个字符位置,分别使用substring(0,5)和slice(0,-9)方法进行字符串节选,最后使用alert()方法输出返回结果。
由图3-9可见,substring(0,5)方法获取了从第0位开始到第5位结束(不包括第5位本身)的所有字符。slice(0,-9)方法因为带有负数-9,表示倒数第9位字符,将其加上字符串长度换算后得到slice(0,5),在没有负数的情况下与substring(0,5)效果完全相同,因此得到同样的结果。
7.字符串大小写转换
在JavaScript中可以对字符串类型的变量使用toLowerCase()和toUpperCase()方法转换其中存在的大小写字母,toLowerCase()表示将所有字母转换为小写,toUpperCase()表示将所有字母转换为大写。
【例3-9】 JavaScript字符串大小写转换
对字符串分别使用toLowerCase()和toUpperCase()方法进行大小写转换。
1. 2. 3. 4. 5. 6. 7. 8. JavaScript字符串大小写转换9. 10. 将字符串"Merry Christmas"分别转换为全大写和全小写的形式。 11. <script> 12. //声明变量msg 13. var msg="Merry Christmas"; 14. //将字符串转换为全大写形式 15. var upper=msg.toUpperCase(); 16. //将字符串转换为全小写形式 17. var lower=msg.toLowerCase(); 18. alert(全大写: upper \n全小写: lower); 19. 20. 21. |
运行效果如图3-10所示。
图3-10 JavaScript字符串大小写转换的效果
8.转义字符
在前面的例题中可以看到alert()方法中带有
符号,表示换行,这种符号称为转义字符。与C语言、Java语言相似,在JavaScript中String类型也包含一系列转义字符,具体情况如表3-3所示。
表3-3 JavaScript常用转义字符对照表
转 义 字 符 |
含 义 |
|
换行 |
|
空一个Tab格,相当于4个空格 |
空格符 |
|
|
回车符 |
f |
换页符 |
\ |
反斜杠 |
\ |
单引号 |
" |
双引号 |