内容简介
《JavaScript入门经典(第5版)》是学习JavaScript编程的经典教程。全新的第5版涵盖了JavaScript 1.8及其以上版本、Ajax和jQuery等内容。《JavaScript入门经典(第5版)》着力介绍JavaScript当今主要特性的基本技巧,从基本概念开始,逐步地介绍按照当今Web标准编写JavaScript代码的很好方式。
《JavaScript入门经典(第5版)》分为七个部分,共24章。第1部分“JavaScript基础”,包括第1章到第5章,介绍了如何使用常用函数编写简单的脚本,第二部分“JavaScript进阶”,包括第6章到第10章,介绍了更复杂的编程范例,比如循环控制、事件处理、面向对象编程、JSON标记、cookie。第三部分“文档对象模型(DOM)”,包括第11章到第15章,介绍了如何使用CSS遍历和编辑DOM(文档对象模型)树,对页面元素进行样式代和动画。第四部分“Ajax”,包括第16到第18章,介绍如何利用XMLHTTPRequest对象向服务器进行后台调用,并且处理服务器的响应;建立简单的Ajax库,调试Ajax应用。第五部分“使用JavaScript库”,包括第19章到第21章,介绍如何使用第三方库,比如Prototype和jQuery,简化跨浏览器的开发工作。第六部分“JavaScript与其他Web技术的配合”,包括第22章到第24章,通过范例介绍如何使用JavaScript控制多媒体、展示HTML5的功能、编写浏览器插件。第七部分“附录”介绍了JavaScript编程常用工具,并给出了JavaScript快速参考。
《JavaScript入门经典(第5版)》内容循序渐进,逐步深入,概念和知识点讲解清楚,而且每章最后配有练习,供读者检查和巩固所学知识。《JavaScript入门经典(第5版)》适合对Web应用开发感兴趣的初中级中户阅读和自学,也可作为大中专院校相关专业的教材。
作者简介
PhilBallard是一位Web技术咨询师,他专注于Web站点的设计、搜索引擎的优化、服务器端脚本编程、客户端设计等等。他还是《SamsTeachYourselfAjaxin10Minutes》一书的作者。MichaelMoncur是StarlingTechnologies公司的所有人,这是一家专注于网络和互联网的咨询公司。他还是Web站点管理员和作家。他撰写过有关JavaScript、网络、MCSE认证方面的图书。
内页插图
目录
第一部分 javascript基础
第1章 了解javascript
1.1 web脚本编程基础
1.2 服务器端与客户端编程
1.3 javascript简介
1.4 javascript起源
浏览器战争
1.5 script标签
1.6 dom简介
1.6.1 w3c和标准兼容
1.6.2 window和document对象
1.6.3 对象标记法
1.7 与用户交互
1.7.1 window.alert()
1.7.2 document.write()
1.7.3 读取document对象的属性
1.8 小结
1.9 问答
1.10 作业
1.10.1 测验
1.10.2 答案
1.11 练习
第2章 创建简单的脚本
2.1 在web页面里添加javascript
2.2 javascript语句
代码注释
2.3 变量
2.4 操作符
2.4.1 算术操作符
2.4.2 操作符优先级
2.4.3 对字符串使用操作符"+"
2.5 捕获鼠标事件
2.5.1 onclick事件处理器
2.5.2 onmouseover和onmouseout事件处理器
2.6 小结
2.7 问答
2.8 作业
2.8.1 测验
2.8.2 答案
2.9 练习
第3章 使用函数
3.1 基本语法
3.2 调用函数
把javascript代码放置到页面的[head]区域
3.3 参数
多参数
3.4 从函数返回值
3.5 变量作用域
3.6 小结
3.7 问答
3.8 作业
3.8.1 测验
3.8.2 答案
3.9 练习
第4章 dom对象和内置对象
4.1 与用户交互
4.1.1 alert()
4.1.2 confirm()
4.1.3 prompt()
4.2 根据id选择元素
innerhtml属性
4.3 访问浏览器历史记录
4.4 使用location对象
4.4.1 使用location对象导航
4.4.2 刷新页面
4.5 浏览器信息:navigator对象
4.6 日期和时间
4.6.1 创建具有当前日期和时间的date对象
4.6.2 创建具有指定日期和时间的date对象
4.6.3 设置和编辑日期与时间
4.7 利用math对象简化运算
4.7.1 取整
4.7.2 获得最大值和最小值
4.7.3 随机数
4.7.4 数学常数
4.7.5 关键字with
4.8 小结
4.9 问答
4.10 作业
4.10.1 测验
4.10.2 答案
4.11 练习
第5章 数据类型
5.1 数值
5.1.1 整数
5.1.2 浮点数
5.1.3 非数值(nan)
5.1.4 使用parsefloat()和parseint()
5.1.5 无穷大(infinity)
5.2 字符串
5.2.1 转义序列
5.2.2 字符串方法
5.3 布尔值
"非"操作符(!)
5.4 数组
5.4.1 创建新数组
5.4.2 初始化数组
5.4.3 数组的方法
5.5 小结
5.6 问答
a.2.1 w3c验证服务
a.2.2 web设计组(wdg)
a.3 调试与检验工具
a.3.1 firebug
a.3.2 jslint
附录b javascript快速参考
5.7 作业
5.7.1 测验
5.7.2 答案
5.8 练习
第二部分 javascript进阶
第6章 功能更强大的脚本
6.1 条件语句
6.1.1 if()语句
6.1.2 比较操作符
6.1.3 测试相等
6.1.4 if进阶
6.1.5 测试多个条件
6.1.6 switch语句
6.1.7 逻辑操作符
6.2 循环和控制结构
6.2.1 while
6.2.2 do…while
6.2.3 for
6.2.4 使用break跳出循环
6.2.5 利用for…in在对象集里循环
6.3 调试代码
6.4 小结
6.5 问答
6.6 作业
6.6.1 测验
6.6.2 答案
6.7 练习
第7章 面向对象编程
7.1 什么是面向对象编程(oop)
7.2 创建对象
7.2.1 创建直接实例
7.2.2 使用关键字this
7.2.3 匿名函数
7.2.4 使用构造函数
7.2.5 对象实例化
7.2.6 构造函数参数
7.3 使用prototype扩展和继承对象
7.3.1 扩展对象
7.3.2 继承
7.4 封装
7.5 使用功能检测
7.6 小结
7.7 问答
7.8 作业
7.8.1 测验
7.8.2 答案
7.9 练习
第8章 json简介
8.1 json是什么
json语法
8.2 访问json数据
8.2.1 使用eval()
8.2.2 使用浏览器对json直接支持
8.3 json的数据序列化
8.4 json数据类型
8.5 模拟关联数组
8.6 使用json创建对象
8.6.1 属性
8.6.2 方法
8.6.3 数组
8.6.4 对象
8.7 json安全性
8.8 小结
8.9 问答
8.10 作业
8.10.1 测验
8.10.2 答案
8.11 练习
第9章 响应事件
9.1 理解事件处理器
9.1.1 事件范例
9.1.2 添加事件处理器
9.1.3 删除事件处理器
9.2 默认操作
禁止默认操作
9.3 event对象
9.3.1 w3c方式
9.3.2 微软方式
9.4 跨浏览器的事件处理器
9.5 事件处理器高级注册方式
9.5.1 w3c方式
9.5.2 微软方式
9.5.3 跨浏览器的实现方式
9.6 小结
9.7 问答
9.8 作业
9.8.1 测验
9.8.2 答案
9.9 练习
第10章 javascript和cookie
10.1 什么是cookie
cookie的局限
10.2 document.cookie属性
数据的编码和解码
10.3 cookie组成
10.3.1 cookiename和cookievalue
10.3.2 domain
10.3.3 path
10.3.4 secure
10.3.5 expires
10.4 编写cookie
10.5 编写cookie的函数
10.6 读取cookie
10.7 删除cookie
10.8 在一个cookie里设置多个值
10.9 小结
10.10 问答
10.11 作业
10.11.1 测验
10.11.2 答案
10.12 练习
第三部分 文档对象模型(dom)
第11章 遍历dom
11.1 dom节点
11.1.1 节点类型
11.1.2 childnodes属性
11.1.3 firstchild和lastchild
11.1.4 parentnode属性
11.1.5 nextsibling和previoussibling
11.1.6 节点值
11.1.7 节点名称
11.2 利用getelementsbytagname()选择元素
11.3 读取元素的属性
11.4 mozilla的dom查看器
11.5 小结
11.6 问答
11.7 作业
11.7.1 测验
11.7.2 答案
11.8 练习
第12章 使用脚本操作dom
12.1 创建节点
12.1.1 createelement()
12.1.2 createtextnode()
12.1.3 clonenode()
12.2 操作子节点
12.2.1 appendchild()
12.2.2 insertbefore()
12.2.3 replacechild()
12.2.4 removechild()
12.3 编辑元素属性
12.4 动态加载javascript文件
12.5 小结
12.6 问答
12.7 作业
12.7.1 测验
12.7.2 答案
12.8 练习
第13章 javascript和css
13.1 css简介
13.1.1 从内容分离样式
13.1.2 css样式声明
13.1.3 在哪里保存样式声明
13.2 dom的style属性
13.3 使用classname访问类
13.4 dom的stylesheets对象
启用、禁用和切换样式表
13.5 小结
13.6 问答
13.7 作业
13.7.1 测验
13.7.2 答案
13.8 练习
第14章 良好的编程习惯
14.1 避免过度使用javascript
14.2 编写易读和易维护的代码
14.2.1 明智地使用注释
14.2.2 使用适当的文件名称、属性名称和方法名称
14.2.3 尽量复用代码
14.2.4 不要假设
14.3 平稳退化
14.4 渐进增强
分离样式、内容和代码
14.5 代码分离的javascript
14.5.1 脱离html
14.5.2 仅把javascript作为性能增强手段
14.6 功能检测
14.7 妥善处理错误
使用try和catch
14.8 小结
14.9 问答
14.10 作业
14.10.1 测验
14.10.2 答案
14.11 练习
第15章 图形与动画
15.1 预加载图像
15.2 页面元素的动画
15.2.1 settimeout()
15.2.2 setinterval()
15.3 渐变不透明度
15.4 css3过渡、转换和动画
15.5 dom移位
15.6 优化性能
15.6.1 使用单个定时器
15.6.2 避免为dom树深层次的元素创建动画效果
15.6.3 使用尽可能低的帧速率
15.7 小结
15.8 问答
15.9 作业
15.9.1 测验
15.9.2 答案
15.10 练习
第四部分 ajax
第16章 ajax入门
16.1 ajax解析
16.1.1 ajax入门
16.1.2 xmlhttprequest对象
16.1.3 与服务器通信
16.1.4 服务器端
16.1.5 处理服务器响应
16.1.6 总结
16.2 xmlhttprequest对象
16.3 创建xmlhttprequest的实例
16.3.1 不同浏览器的不同规则
16.3.2 跨浏览器的解决方案
16.3.3 方法和属性
16.3.4 open()方法
16.3.5 send()方法
16.4 发送服务器请求
处理浏览器缓存
16.5 监视服务器状态
16.5.1 readystate属性
16.5.2 服务器响应状态代码
16.6 回调函数
16.7 responsetext和responsexml属性
16.7.1 responsetext属性
16.7.2 responsexml属性
16.8 小结
16.9 问答
16.10 作业
16.10.1 测验
16.10.2 答案
16.11 练习
第17章 创建简单的ajax库
17.1 ajax库
17.1.1 目标
17.2 库的实现
17.2.1 创建xmlhttprequest实例
17.2.2 get和post请求
17.2.3 回调函数
17.2.4 实现ajax调用
17.3 使用ajax库
17.4 小结
17.5 问答
17.6 作业
17.6.1 测验
17.6.2 答案
17.7 练习
第18章 解决ajax问题
18.1 调试ajax程序
18.1.1 firebug
18.1.2 ie
18.2 常见ajax错误
18.2.1 "返回"按钮
18.2.2 书签和链接
18.2.3 给用户的反馈
18.2.4 让ajax平稳退化
18.2.5 应对搜索引擎嗅探
18.2.6 突出活跃页面元素
18.2.7 避免在不适宜的场合使用ajax
18.2.8 安全
18.2.9 多浏览器平台测试
18.3 常见编程注意事项
18.3.1 get请求与浏览器缓存
18.3.2 "拒绝访问"错误
18.3.3 转义序列
18.4 小结
18.5 问答
18.6 作业
18.6.1 测验
18.6.2 答案
18.7 练习
第五部分 使用javascript库
第19章 利用库简化工作
19.1 为什么要使用库?
19.2 库能做什么?
19.3 常见的库
19.3.1 prototype框架
19.3.2 dojo
19.3.3 yahoo! ui
19.3.4 mootools
19.3.5 jquery
19.4 prototype.js介绍
19.4.1 $()函数
19.4.2 $f()函数
19.4.3 form对象
19.4.4 try.these()函数
19.4.5 用ajax对象包装xmlhttprequest
19.5 小结
19.6 问答
19.7 作业
19.7.1 测验
19.7.2 答案
19.8 练习
第20章 jquery入门
20.1 在页面里引用jquery
20.1.1 下载jquery
20.1.2 使用远程方式
20.2 jquery的$(document).ready处理器
20.3 选择页面元素
20.4 操作html内容
20.4.1 html()
20.4.2 text()
20.4.3 attr()
20.5 显示和隐藏元素
20.5.1 show()
20.5.2 hide()
20.5.3 toggle()
20.6 元素动画
20.6.1 淡入淡出
20.6.2 滑动
20.6.3 动画
20.7 命令链
20.8 处理事件
20.9 使用jquery实现ajax
20.9.1 load()
20.9.2 get()和post()
20.9.3 ajax()
20.10 小结
20.11 问答
20.12 作业
20.12.1 测验
20.12.2 答案
20.13 练习
第21章 jquery ui(用户界面)库
21.1 jquery ui是什么
21.2 如何在页面里引用jquery ui
使用themeroller
21.3 交互
21.3.1 拖和放
21.3.2 调整大小
21.3.3 排序
21.4 使用微件
21.4.1 可折叠控件
21.4.2 日期拾取器
21.4.3 选项卡
21.5 小结
21.6 问答
21.7 作业
21.7.1 测验
21.7.2 答案
21.8 练习
第六部分 javascript与其他web技术的配合
第22章 javascript与多媒体
22.1 多媒体格式
22.1.1 音频格式
22.1.2 视频格式
22.1.3 浏览器插件
22.2 使用锚点标签
22.3 使用[embed]和[object]
22.3.1 使用[embed]
22.3.2 使用[object]
22.3.3 javascript和插件
22.3.4 插件功能探测
22.4 flash
22.5 小结
22.6 问与答
22.7 作业
22.7.1 测验
22.7.2 答案
22.8 练习
第23章 html5与javascript
23.1 html5的新标签
23.2 一些重要的新元素
23.2.1 使用[video]回放视频
23.2.2 利用canplaytype()测试可用的格式
23.2.3 控制回放
23.2.4 用[audio]标签播放声音
23.3.5 利用[canvas]在页面上绘图
23.4 拖放
23.5 本地存储
23.6 操作本地文件
查看浏览器的支持情况
23.7 小结
23.8 问答
23.9 作业
23.9.1 测验
23.9.2 答案
23.10 练习
第24章 web页面之外的javascript
24.1 浏览器之外的javascript
24.2 编写google chrome扩展
24.2.1 建立简单的扩展程序
24.2.2 调试扩展程序
24.2.3 下一步
24.3 小结
24.4 问答
24.5 作业
24.5.1 测验
24.5.2 答案
24.6 练习
第七部分 附录
附录a javascript开发工具
a.1 编辑器
a.1.1 notepad++
a.1.2 jedit
a.1.3 scite
a.1.4 geany
a.2 验证程序
前言/序言
踏上代码世界的奇妙旅程:一本让你轻松掌握编程精髓的实用指南 在这个日新月异的数字时代,编程已不再是少数技术专家的专属技能,而逐渐成为连接现实世界与无限可能性的关键桥梁。无论你是渴望创造互动网站,还是希望搭建自动化工具,亦或是对构建下一代应用程序充满热情,掌握一门强大的编程语言都是迈出第一步的基石。而对于许多初学者而言,如何在纷繁复杂的编程语言中找到那个最适合自己的起点,以及如何高效、系统地学习,常常是他们面临的第一个挑战。 正是基于这样的初衷,我们为你精心打造了这本全新的编程入门指南。它并非专注于某一特定技术或工具的深入钻研,而是致力于为你描绘一幅清晰、完整且易于理解的编程全景图。我们相信,一个扎实的理论基础和对编程核心概念的深刻理解,远比死记硬背零散的代码片段来得更为重要。因此,本书将带领你走进编程的殿堂,从最根本的逻辑思维方式入手,循序渐进地揭示代码背后的奥秘。 核心理念:理解比记忆更重要 我们深知,对于新手来说,大量的术语和抽象的概念往往会让人望而生畏。本书的核心理念在于“理解”。我们不会简单地罗列语法规则,而是会深入浅出地解释每一个概念背后的逻辑和原理。例如,当谈及“变量”时,我们不会仅仅告诉你它是一个存储数据的容器,更会通过生动的类比,让你体会到它在程序运行过程中扮演的“信使”角色,如何传递信息,又如何在不同阶段存储和更新。同样,对于“循环”和“条件判断”,我们将引导你思考它们在解决实际问题时所提供的强大能力,比如如何让程序自动重复执行任务,或者根据不同的情况做出不同的响应。 思维训练:构建坚实的逻辑基石 编程本质上是一门关于解决问题的艺术。它需要清晰的逻辑思维,严谨的分析能力,以及将复杂问题分解为一系列可执行步骤的能力。本书将把思维训练融入到学习的每一个环节。我们会提供一系列精心设计的练习和挑战,这些练习并非为了让你记住代码,而是为了锻炼你如何运用编程思维去分析问题,如何设计算法,如何思考程序的运行流程。例如,我们会引导你思考如何设计一个能够计算一系列数字平均值的程序,或者如何让程序判断一个输入的数字是奇数还是偶数。在解决这些问题的过程中,你会自然而然地掌握诸如顺序执行、分支选择、循环迭代等最基本的编程逻辑。 基础概念:夯实编程的“砖瓦” 掌握了编程思维,接下来便是学习构成编程世界的“砖瓦”——基础概念。本书将覆盖所有新手必须掌握的关键概念,并用最直观的方式进行讲解。 数据类型与结构: 你将了解计算机如何理解和处理不同类型的数据,从最简单的数字、文本,到更复杂的列表和集合。我们将解释为什么区分不同的数据类型至关重要,以及如何选择最适合的数据结构来组织你的信息。 运算符与表达式: 学习如何使用各种运算符进行计算、比较和逻辑判断,以及如何将它们组合成有意义的表达式,让你的程序能够进行各种运算。 控制流: 这是让你的程序“动起来”的关键。你将深入学习条件语句(如if-else),让你的程序能够根据不同情况做出判断和选择;掌握循环语句(如for, while),让你的程序能够高效地重复执行任务,从而处理大量数据或执行复杂流程。 函数: 我们将把函数视为程序中的“功能模块”。你将学习如何定义自己的函数,将重复性的代码封装起来,提高代码的可读性和可维护性。理解函数的参数和返回值,将使你能够构建更强大、更模块化的程序。 输入与输出: 学习如何让你的程序与外部世界进行交互,接收用户输入的数据,并将处理结果展示出来。这包括读取文件、处理用户键盘输入,以及将结果打印到屏幕或写入文件。 实践导向:理论与实践的完美结合 尽管本书强调理解,但我们深知实践是检验真理的唯一标准。因此,每一章的内容都将伴随着清晰的代码示例,这些示例都经过精心设计,力求简洁、易懂,并且能够直观地演示所讲解的概念。 逐步深入的示例: 我们将从最简单的“Hello, World!”开始,逐步引导你构建更复杂的程序。每一个示例都将附带详细的解释,告诉你每一行代码的作用,以及它为何这样写。 实际应用场景的模拟: 我们会尝试模拟一些常见的实际应用场景,让你看到所学知识如何在真实世界中发挥作用。例如,你可以学习如何编写一个简单的计算器,或者一个能够管理列表的程序。 动手练习与思考题: 每章结尾都将提供一系列动手练习和思考题。这些练习旨在巩固你所学的知识,并鼓励你独立思考和解决问题。从简单的修改代码,到需要你独立设计程序的挑战,它们将帮助你将理论知识转化为实际技能。 学习路线图:清晰、高效的学习路径 本书为你设计了一条清晰的学习路线图。它不是一次性的信息轰炸,而是循序渐进的知识构建过程。你将从最基础的逻辑思维开始,逐步理解核心概念,最终能够独立思考和编写简单的程序。我们建议你按照章节的顺序进行学习,确保你打下坚实的基础,为后续更深入的学习做好准备。 谁适合阅读本书? 完全零基础的编程爱好者: 如果你对编程充满好奇,但从未接触过任何编程语言,本书将是你的理想起点。 希望系统学习编程基础的人: 即使你曾经接触过一些编程概念,但感到知识零散,本书将帮助你构建一个系统、完整的知识体系。 需要培养逻辑思维和解决问题能力的学生: 编程思维是现代社会一项宝贵的技能,本书将帮助你锻炼这方面的能力。 希望了解计算机如何工作的读者: 通过学习编程,你将更深入地理解计算机是如何执行指令,如何处理信息的。 超越基础,展望未来 学完本书,你将拥有坚实的编程基础,并能够独立编写许多实用的程序。这仅仅是代码世界精彩旅程的开始。你将具备探索更高级编程概念,学习其他编程语言,以及投身于软件开发、数据科学、人工智能等领域的信心和能力。 这不仅仅是一本关于“如何写代码”的书,更是一本关于“如何思考”的书。它将赋予你一种强大的工具和一种全新的视角,去理解和改造你所处的世界。让我们一起踏上这段激动人心的编程之旅吧!