本书的源码地址:http://javascriptbook.com 还有一个源:http://www.tupwk.com.cn/downpage
前言:可以使用JavaScript选择HTML页面上的任意元素、属性或文本
CSS:使用规则来指定一个或多个元素的内容在浏览器中的显示方式,每个规则都有选择器和声明块,css选择器指定哪些元素需要应用这个规则,声明块包含这个规则,这些规则指定如何显示那些元素。声明块中的每一个声明都有属性(想要控制什么东西)和值(属性的设置值)
不同的浏览器之间会存在许多不一致性,这些不一致性会影响JavaScript开发人员,但是jQuery可以帮助我们处理跨浏览器不一致性的问题(这也是jQuery被如此多的Web开发人员如此广泛使用的最主要原因之一)。
第一章.编程基础知识
脚本
脚本由一台计算机可以一步一步执行的指令组成。
根据用户如何与Web页面进行交互,浏览器可以只执行脚本的某个部分。
脚本可以运行代码中的不同部分来响应它周围的情景。
问题:什么是脚本?如何创建一段脚本?
一段脚本是一系列计算机能够遵循的指令, 这些指令都是为了达成某个目标。
脚本每次运行时,可能只会执行全部指令中的一部分。
计算机使用与人类不同的方式来完成任务,所以你的指令必须让计算机能够程序化地解决掉任务。
要编写-段脚本, 你需要将目标分解成一系列的任务,然后分解成一个一个的完成任务所需的步骤(流程图可以帮助我们完成这一点。
对象和属性
(类是对象的抽象,而对象是类的具体实例)
程序员创建一个专门给计算机用的、与我们的理解截然不同的模型(对象):如酒店、汽车对象,即使无法看到酒店和汽车的照片,数据本身也仍然能够告诉你有关酒店和汽车场景的大量信息。
在计算机编程中,现实世界中的每个物理物件都可以被表示为一个对象。
事件(就是触发一个函数)交互
事件起着启动的作用,启动一个函数,事件是要和方法绑定的。
事件就是计算机用来说:“嘿,xx事情刚刚发生了”的方式。
程序员可以编写代码来告诉计算机:当这个事件发生时,执行哪些代码。
事件是用来做什么的
程序员可以在一种特定的事件发生时选择响应哪些事件,事件可以用来触发一段特定的代码。
脚本通常使用不同的事件来触发不同类型的功能。
所以,一段脚本可以声明哪些事件是程序员想要响应的,当那些事件中的某个事件发生时,哪些脚本会被运行。
例如:
酒店对象:一家酒店会时不时预订出去房间。每次当一间房间被预订时,一个 被称为book的事件可以用来触发代码,增加bookings属性的值。类似的,cancel事件,可以触发 代码来减少bookings属性的值。
汽车对象:一名驾驶者在开车时都会进行加速和制动。accelerate事 件可以触发代码,增加currentSpeed属性的值; brake事件可以触发代码,减少currentSpeed属性的值。你会在下一页学习响应这些事件以及更改那些属性的值的代码。
把属性、事件、方法结合起来
计算机使用数据来为真实世界中的事物建立模型。一个对象的事件、方法、属性是彼此相连的:事件可以触发方法,方法可以获取或更新对象的属性。
例如:
酒店对象:
1.当进行房间预订时,book事件发生。
2. book事件触发makeBooking()方法,这个方法增加bookings属性的值。
3. bookings属 性的值发生变化,影响到酒店可以被预订的空房间数。
汽车对象:
1.当一名驾驶员提速时,accelerate事件发生。
2. accelerate事件 调用changeSpeed()方法,这个方法增加currentSpeed属性的值。
3. currentSpeed属性的值反映出汽车的当前行驶速度。
web浏览器是使用对象构建的程序
你已经看到如何使用数据来为酒店和汽车建模。Web浏览器也会为它们正在显示的Web页面以及页面所在的浏览器窗口建立类似的模型。
window对象
Web浏览器使用window对象来表示窗口或选项卡。window对象的location属性会告诉你当前页面的URL。
document对象
在每个窗口中载入的当前Web页面使用document对象建模。document对 象的title属性告诉你Web 页面上
和标签之间的标题是什么,document对象的lastModified属性告诉你页面最后被修改的日期。
document对象表示整个web页面,所有的web浏览器都实现了这个对象
在模型的顶端是一个document对象,它代表整个文档。document对象下方的每一个方块都被称为一个节点。 每一个节点都是另一个对象。这个示例展现了三种不同类型的节点:元素、元素中的文字、元素的属性。
js中document.write()里面的标签写法:
document.write('<h3>'+greeting+'</h3>')
或者
document.write('<h3>+greeting+</h3>')
浏览器在遇到<script>
元素时会停止载入脚本,然后检查,看看自己是否有什么要做的
如何为Web页面编写一段脚本?
1.最好将JavaScript代码放置到各自的 JavaScript文件中。JavaScript文件都是文本文件(如同HTML页面和CSS样式表文件),但是JavaScript文件有js扩展名。
2.HTML中的<script>
元素用来在HTML 页面中告诉浏览器载入JavaSoript文件(类似于元素用来载入CSS文件)。
3.如果在浏览路中查看页面的源代码,会发现JavScript不会修改HTML
标记,这是因为脚本是和浏览器创建的Web页面的模型进行交互的。
第二章.JavaScript基础指令
JavaScript是大小写敏感的。
变量
变量:可以将变量比作短暂记忆,因为只要离开页面,浏览器就会忘掉它所包含的所有信息。
在给变量赋值之前,程序员将变量的值称为undefined
不像一些其他的编程语言,当在JavaScript中声明一个变量时,不需要指定它所包含的数据类型。
数据类型
JS中有6种数据类型,其中5种为简单(或基本)数据类型,第6种是对象(也被称为复杂数据类型);
5种简单数据类型:
String;
Number;
Boolean;
ubdefined(变量被声明但未被赋值);
Null(没有值的变量,可能曾被赋值,但现在没有值);
undefined和null不具有对象;
复杂数据类型:
Object:数组和函数被认为是对象的类型;
字符串必须被包含在一对单引号或双引号里面;
字符串必须总是被写在一行中。
在字符串中使用引号
1.由于字符串必须被放在单引号或者双引号中,因此如果想要在字符串中使用双引号,就必须使用单引号来包含整个字符串,如果想要在字符串中使用单引号,就必须使用双引号来包含整个字符串
2.使用转义字符:这种技巧需要在字符串里面的任何引号的前面,使用一个反斜杠(\),这个反斜杠告诉解释器,后面的字符是字符串的一部分,而不是字符串的结束符号。
变量的命名规则
数组
当需要使用一组相互之间有关联的值时,就应当考虑数组;
当不知道一个列表中要包含多少项数据时,数组尤其有用,这是因为在创建数组时,不需要指定它会包含多少个值;
数组中的值不需要是相同类型,所以可以在同一个数组中存储字符串、数字和布尔值;
创建数组的方法
1.字面量法:同创建任何其他变量的方法类似,可以直接创建数组并命名(使用var关键字,后边跟着数组的名字),赋给数组的值被包含在一对中括号里面,每个值用逗号分开,这通常是推荐的方法。索引的方法colors[1];
如:
var colors;
colors = ['white','black','custom'];
2.数组构造函数法
这种方法的形式是用一个new关键字,后面跟着Array()(这是数组的类),值在圆括号而不是中括号里面,调用item()方法从数组中获取数据(数据项的索引在圆括号中指定),colors.item(1);
如:
var colors = new Array('white','black','custom');
从技术上讲:undefined也是一种数据类型,就像数字类型、布尔类型那样;
合并两个字符串
使用+号
greeting = 'Hi'+'Molly'```;
如果用数字和字符串相加,那么数字会变成字符串的一部分,例如:
var number=12;
var street='Ivy Road';
var add = number+street;
最后的结果为:‘12ivy Road’
如果尝试对字符串使用算术操作数,那么结果会等于一个叫做NaN的值,这个值的意思是:not a number;
遇到错误
原因:因为JavaScript运行时,id="greeting"的那个div元素可能还没解析和加载。
解决办法:将script元素放在要获取的id="greeting"的元素的后面,先解析加载这个元素,再对它进行处理;
改为: