[关闭]
@xudongh 2016-07-29T11:28:35.000000Z 字数 17045 阅读 2106

JavaScript学习笔记

前端开发


JavaScript

JavaScript 是脚本语言
JavaScript 是一种轻量级的编程语言。
JavaScript 是可插入 HTML 页面的编程代码。
JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。


JavaScript教程

JS实现

1. script标签

2. JS插入到html的方法

  1. <head>中插入JS
  2. <head>中插入JS
  3. 引用外部JS文件 <script src="myScript.js"></script>

<head><body> 中引用脚本文件都是可以的。实际运行效果与您在 <script> 标签中编写脚本完全一致。
注意:外部脚本不能包含 <script> 标签。


JS输出

1. 操作HTML元素

使用document.getElementById(id)方法来获取指定HTML元素。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>My First Web Page</h1>
  5. <p id="demo">My First Paragraph</p>
  6. <script>
  7. document.getElementById("demo").innerHTML="My First JavaScript";
  8. </script>
  9. </body>
  10. </html>

以上p标签中显示为“My First JavaScript”。

2. 写到文档中输出

可直接写HTML标签到文档中输出。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>My First Web Page</h1>
  5. <script>
  6. document.write("<p>My First JavaScript</p>");
  7. </script>
  8. </body>
  9. </html>

注意:请使用 document.write() 仅仅向文档输出写内容。
如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖。


JS语句

1. 分号

分号用于分隔JavaScript语句。通常在每条可执行的语句结尾添加分号。

2. 大小写

JavaScript对大小写敏感。

3. 对代码行进行分行

可以在文本字符串中使用反斜杠对代码行进行换行。下面的例子会正确地显示:

  1. document.write("Hello \
  2. World!");

但是不能这样拆行:

  1. document.write \
  2. ("Hello World!");

JS注释

1. 单行注释

单行注释以 // 开头

2. 多行注释

多行注释以 /* 开始,以 */ 结尾


JS变量

1. 变量的书写

与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y)。
变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。

2. 变量的数据类型

JavaScript 变量还能保存其他数据类型,比如文本值,即字符串。
当您向变量分配文本值时,应该用双引号或单引号包围这个值。
当您向变量赋的值是数值时,不要使用引号。如果您用引号包围数值,该值会被作为文本来处理。

3. 声明变量

使用var关键词来声明变量。

  1. //该变量是空的,其值实际为undefined
  2. var one;
  3. //该变量的值为3
  4. var two = 3;
  5. //在一条语句中声明很多变量,该语句以 var 开头,并使用逗号分隔变量
  6. var name="Gates", age=56, job="CEO";

一个好的编程习惯是,在代码开始处,统一对需要的变量进行声明。

如果重新声明JS变量,该变量的值不会丢失。

  1. var carname="Volvo";
  2. var carname;
  3. //其值依然为"Volvo"

4. 算数

可对JS变量做算数,使用=和+这类运算符。


JS数据类型

字符串、数字、布尔、数组、对象、Null、Undefined

1. 字符串

字符串是存储字符(比如 "Bill Gates")的变量。
字符串可以是引号中的任意文本,可以使用单引号或双引号。

  1. var carname="Bill Gates";
  2. var carname='Bill Gates';
  3. //可以在字符串中使用引号,只要不匹配包围字符串的引号即可
  4. var answer="He is called 'Bill'";
  5. var answer='He is called "Bill"';

2. 数字

极大或极小的数字可以通过科学(指数)计数法来书写

  1. var x1=34.00; //使用小数点来写
  2. var x2=34; //不使用小数点来写
  3. var y=123e5; // 12300000
  4. var z=123e-5; // 0.00123

3. 布尔

布尔(逻辑)只能有两个值:true 或 false。

  1. var x=true
  2. var y=false

4. 数组

下面的代码创建名为 cars 的数组:

  1. var cars=new Array();
  2. cars[0]="Audi";
  3. cars[1]="BMW";
  4. cars[2]="Volvo";

5. 对象

对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔。

  1. var person={firstname:"Bill", lastname:"Gates", id:5566};
  2. //对象 (person) 有三个属性:firstname、lastname 以及 id。

对象属性有两种寻址方式:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <script>
  5. //空格和折行无关紧要,声明可横跨多行
  6. var person={
  7. firstname : "Bill",
  8. lastname : "Gates",
  9. id : 5566
  10. };
  11. document.write(person.lastname + "<br />");
  12. document.write(person["lastname"] + "<br />");
  13. </script>
  14. </body>
  15. </html>

6. Undefined和Null

Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。

7. 声明变量类型

当声明新变量时,可以使用关键词 "new" 来声明其类型:

  1. var carname=new String;
  2. var x= new Number;
  3. var y= new Boolean;
  4. var cars= new Array;
  5. var person= new Object;

JavaScript 变量均为对象。当声明一个变量时,就创建了一个新的对象。


JS对象

在 JavaScript 中,对象是拥有属性和方法的数据。

1.属性和方法

属性是与对象相关的值,方法是能够在对象上执行的动作。

2.JS中的对象

在 JavaScript 中,对象是数据(变量),拥有属性和方法。
如声明以下 JavaScript 变量时:

  1. var txt = "Hello";

实际上已经创建了一个 JavaScript 字符串对象。字符串对象拥有内建的属性 length。对于上面的字符串来说,length 的值是 5。
属性:

  1. txt.length=5

方法:

  1. txt.indexOf()
  2. txt.replace()
  3. txt.search()

在面向对象的语言中,属性和方法常被称为对象的成员。

3. 创建JS对象

本例创建名为 "person" 的对象,并为其添加了四个属性:

  1. person=new Object();
  2. person.firstname="Bill";
  3. person.lastname="Gates";
  4. person.age=56;
  5. person.eyecolor="blue";

4. 访问对象的属性

访问对象属性的语法是:

  1. objectName.propertyName

使用 String 对象的 length 属性来查找字符串的长度:

  1. var message="Hello World!";
  2. var x=message.length;

在以上代码执行后,x 的值是:

  1. 12

5. 访问对象的方法

访问对象属性的方法是:

  1. objectName.propertyName

使用 String 对象的 toUpperCase() 方法来把文本转换为大写:

  1. var message="Hello world!";
  2. var x=message.toUpperCase();

在以上代码执行后,x 的值是:

  1. HELLO WORLD!

JS函数

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

1. 函数语法

函数就是包裹在花括号中的代码块,前面使用了关键词 function:

  1. function functionname()
  2. {
  3. 这里是要执行的代码
  4. }

可以在某事件发生时直接调用函数,并且可由 JavaScript 在任何位置进行调用。
**注意:**JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

2. 调用带参数的函数

在调用函数时,可以向其传递值,这些值被称为参数。这些参数可以在函数中使用。

  1. myFunction(argument1,argument2) //多个参数由逗号 (,) 分隔

当声明函数时,请把参数作为变量来声明:

  1. function myFunction(var1,var2)
  2. {
  3. 这里是要执行的代码
  4. }

变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>请点击其中的一个按钮,来调用带参数的函数。</p>
  5. <button onclick="myFunction('Harry Potter','Wizard')">点击这里</button>
  6. <button onclick="myFunction('Bob','Builder')">点击这里</button>
  7. <script>
  8. function myFunction(name,job)
  9. {
  10. alert("Welcome " + name + ", the " + job);
  11. }
  12. </script>
  13. </body>
  14. </html>

点击的不同的按钮,上面的例子会提示 "Welcome Harry Potter, the Wizard" 或 "Welcome Bob, the Builder"。

3. 带返回值的函数

使用 return 语句实现。
在使用 return 语句时,函数会停止执行,并返回指定的值。

  1. function myFunction()
  2. {
  3. var x=5;
  4. return x;
  5. }

计算两个数字的乘积,并返回结果:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p>本例调用的函数会执行一个计算,然后返回结果:</p>
  5. <p id="demo"></p>
  6. <script>
  7. function myFunction(a,b)
  8. {
  9. return a*b;
  10. }
  11. document.getElementById("demo").innerHTML=myFunction(4,3);
  12. </script>
  13. </body>
  14. </html>

如果仅仅希望退出函数,也可使用 return 语句。返回值是可选的:

  1. function myFunction(a,b)
  2. {
  3. if (a>b)
  4. {
  5. return;
  6. }
  7. x=a+b
  8. }

如果 a 大于 b,则上面的代码将退出函数,并不会计算 a 和 b 的总和。

4. 局部变量和全局变量

局部变量:在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。

全局变量:在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。


JS运算符

1. 算术运算符

算术运算符用于执行变量与/或值之间的算术运算。

运算符 描述
+
-
*
/
% 求余数(保留整数)
++ 累加
-- 递减

2. 赋值运算符

赋值运算符用于给 JavaScript 变量赋值。

运算符 例子 等价于
= x=y x=y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
%= x%=y x=x%y

3. 用于字符串的+运算符

+运算符用于把文本值或字符串变量加起来(连接起来)。

  1. txt1="What a very";
  2. txt2="nice day";
  3. txt3=txt1+txt2;
  4. txt4=txt1+" "+txt2;

在以上语句执行后,
变量 txt3 包含的值是 "What a verynice day",
变量 txt4 包含的值是 "What a very nice day"。

4. 对字符串和数字进行加法运算

  1. x=5+5;
  2. document.write(x);
  3. //输出结果为10
  4. x="5"+"5";
  5. document.write(x);
  6. //输出结果为55
  7. x=5+"5";
  8. document.write(x);
  9. //输出结果为55
  10. x="5"+5;
  11. document.write(x);
  12. //输出结果为55

规则是:如果把数字与字符串相加,结果将成为字符串。


JS if...else语句

1. 条件语句

  • if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
  • if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
  • if...else if....else 语句 - 使用该语句来选择多个代码块之一来执行
  • switch 语句 - 使用该语句来选择多个代码块之一来执行

2. if 语句

只有当指定条件为 true 时,该语句才会执行代码。

  1. if (条件)
  2. {
  3. 只有当条件为 true 时执行的代码
  4. }

注意:请使用小写的 if。使用大写字母(IF)会生成 JavaScript 错误!

3. if...else 语句

请使用 if....else 语句在条件为 true 时执行代码,在条件为 false 时执行其他代码。

  1. if (条件)
  2. {
  3. 当条件为 true 时执行的代码
  4. }
  5. else
  6. {
  7. 当条件不为 true 时执行的代码
  8. }

4. If...else if...else 语句

使用 if....else if...else 语句来选择多个代码块之一来执行。

  1. if (条件 1)
  2. {
  3. 当条件 1 true 时执行的代码
  4. }
  5. else if (条件 2)
  6. {
  7. 当条件 2 true 时执行的代码
  8. }
  9. else
  10. {
  11. 当条件 1 条件 2 都不为 true 时执行的代码
  12. }

JS Switch 语句

switch 语句用于基于不同的条件来执行不同的动作。

  1. switch(n)
  2. {
  3. case 1:
  4. 执行代码块 1
  5. break;
  6. case 2:
  7. 执行代码块 2
  8. break;
  9. default:
  10. n case 1 case 2 不同时执行的代码
  11. }

工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。


JS For 语句

1. 循环

如果一遍又一遍地运行相同的代码,并且每次的值都不同,那么使用循环是很方便的。
如下

  1. document.write(cars[0] + "<br>");
  2. document.write(cars[1] + "<br>");
  3. document.write(cars[2] + "<br>");
  4. document.write(cars[3] + "<br>");
  5. document.write(cars[4] + "<br>");
  6. document.write(cars[5] + "<br>");

通常会使用循环语句

  1. for (var i=0;i<cars.length;i++)
  2. {
  3. document.write(cars[i] + "<br>");
  4. }

2. 不同类型的循环

  • for - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块

3. For 循环

  1. for (语句 1; 语句 2; 语句 3)
  2. {
  3. 被执行的代码块
  4. }
  5. //语句 1 在循环(代码块)开始前执行
  6. //语句 2 定义运行循环(代码块)的条件
  7. //语句 3 在循环(代码块)已被执行之后执行

语句 1
通常会使用语句 1 初始化循环中所用的变量 (var i=0)。
语句 1 是可选的,也就是说不使用语句 1 也可以。
可以在语句 1 中初始化任意(或者多个)值。
同时还可以省略语句 1(比如在循环开始前已经设置了值时):

  1. var i=2,len=cars.length;
  2. for (; i<len; i++)
  3. {
  4. document.write(cars[i] + "<br>");
  5. }

语句 2
通常语句 2 用于评估初始变量的条件。
语句 2 同样是可选的。
如果语句 2 返回 true,则循环再次开始,如果返回 false,则循环将结束。
提示:如果省略了语句 2,那么必须在循环内提供 break。否则循环就无法停下来。这样有可能令浏览器崩溃。

语句 3
通常语句 3 会增加初始变量的值。
语句 3 也是可选的。
语句 3 有多种用法。增量可以是负数 (i--),或者更大 (i=i+15)。
语句 3 也可以省略(比如当循环内部有相应的代码时):

  1. var i=0,len=cars.length;
  2. for (; i<len; )
  3. {
  4. document.write(cars[i] + "<br>");
  5. i++;
  6. }

2. For/In 循环

  1. var person={fname:"John",lname:"Doe",age:25};
  2. for (x in person)
  3. {
  4. txt=txt + person[x];
  5. }

JS While 循环

1. while 循环

While 循环会在指定条件为真时循环执行代码块。

  1. while (条件)
  2. {
  3. 需要执行的代码
  4. }

注意:如果忘记增加条件中所用变量的值,该循环永远不会结束。该可能导致浏览器崩溃。

2. do/while 循环

do/while 循环是 while 循环的变体。该循环会执行一次代码块,在检查条件是否为真之前,然后如果条件为真的话,就会重复这个循环。

  1. do
  2. {
  3. 需要执行的代码
  4. }
  5. while (条件);

该循环至少会执行一次,即使条件是 false,隐藏代码块会在条件被测试前执行

3. 比较 for 和 while

本例中的循环使用 for 循环来显示 cars 数组中的所有值:

  1. cars=["BMW","Volvo","Saab","Ford"];
  2. var i=0;
  3. for (;cars[i];)
  4. {
  5. document.write(cars[i] + "<br>");
  6. i++;
  7. }

本例中的循环使用使用 while 循环来显示 cars 数组中的所有值:

  1. cars=["BMW","Volvo","Saab","Ford"];
  2. var i=0;
  3. while (cars[i])
  4. {
  5. document.write(cars[i] + "<br>");
  6. i++;
  7. }

输出结果均为:

  1. BMW
  2. Volvo
  3. Saab
  4. Ford

JS Break 和 Continue 语句

1. Break 语句

break 语句可用于跳出循环。
break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话):

  1. for (i=0;i<10;i++)
  2. {
  3. if (i==3)
  4. {
  5. break;
  6. }
  7. // if语句可写成 if (i==3) break;
  8. x=x + "The number is " + i + "<br>";
  9. }

2. Continue 语句

continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。

  1. for (i=0;i<=10;i++)
  2. {
  3. if (i==3) continue;
  4. x=x + "The number is " + i + "<br>";
  5. }
  6. //该循环会跳过 i=3 的步进

3. 标签

可以对 JavaScript 语句进行标记。如需标记 JavaScript 语句,请在语句之前加上冒号:

  1. label:
  2. 语句

通过标签引用,break 语句可用于跳出任何 JavaScript 代码块

  1. cars=["BMW","Volvo","Saab","Ford"];
  2. list:
  3. {
  4. document.write(cars[0] + "<br>");
  5. document.write(cars[1] + "<br>");
  6. document.write(cars[2] + "<br>");
  7. break list;
  8. document.write(cars[3] + "<br>");
  9. document.write(cars[4] + "<br>");
  10. document.write(cars[5] + "<br>");
  11. }

JS 错误

  • try 语句测试代码块的错误。
  • catch 语句处理错误。
  • throw 语句创建自定义错误。

1. 测试和捕捉

try 语句允许我们定义在执行时进行错误测试的代码块。
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。
JavaScript 语句 try 和 catch 是成对出现的。

  1. try
  2. {
  3. //在这里运行代码
  4. }
  5. catch(err)
  6. {
  7. //在这里处理错误
  8. }

在下面的例子中,故意在 try 块的代码中写了一个错字(adddlert)。
catch 块会捕捉到 try 块中的错误,并执行代码来处理它。

  1. var txt="";
  2. function message()
  3. {
  4. try
  5. {
  6. adddlert("Welcome guest!");
  7. }
  8. catch(err)
  9. {
  10. txt="There was an error on this page.\n\n";
  11. txt+="Error description: " + err.message + "\n\n";
  12. txt+="Click OK to continue.\n\n";
  13. alert(txt);
  14. }
  15. }

2. Throw 语句

throw 语句允许我们创建自定义错误。
正确的技术术语是:创建或抛出异常(exception)。
如果把 throw 与 try 和 catch 一起使用,那么我们能够控制程序流,并生成自定义的错误消息。catch 会捕捉到这个错误,并显示一段自定义的错误消息。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <script>
  5. function myFunction()
  6. {
  7. try
  8. {
  9. var x=document.getElementById("demo").value;
  10. if(x=="") throw "值为空";
  11. if(isNaN(x)) throw "不是数字";
  12. if(x>10) throw "太大";
  13. if(x<5) throw "太小";
  14. }
  15. catch(err)
  16. {
  17. var y=document.getElementById("mess");
  18. y.innerHTML="错误:" + err + "。";
  19. }
  20. }
  21. </script>
  22. <h1>我的第一个 JavaScript 程序</h1>
  23. <p>请输入 5 到 10 之间的数字:</p>
  24. <input id="demo" type="text">
  25. <button type="button" onclick="myFunction()">测试输入值</button>
  26. <p id="mess"></p>
  27. </body>
  28. </html>

JS表单验证

JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。
被 JavaScript 验证的这些典型的表单数据有:

1. 必填(或必选)项目

下面的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题):

  1. function validate_required(field,alerttxt)
  2. {
  3. with (field)
  4. {
  5. if (value==null||value=="")
  6. {alert(alerttxt);return false}
  7. else {return true}
  8. }
  9. }

2. E-mail验证

下面的函数检查输入的数据是否符合电子邮件地址的基本语法。
意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:

  1. function validate_email(field,alerttxt)
  2. {
  3. with (field)
  4. {
  5. apos=value.indexOf("@")
  6. dotpos=value.lastIndexOf(".")
  7. if (apos<1||dotpos-apos<2)
  8. {alert(alerttxt);return false}
  9. else {return true}
  10. }
  11. }

JavaScript HTML DOM

DOM 简介

1. HTML DOM

DOM(Document Object Model):文档对象模型。
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
HTML DOM 模型被构造为对象的树。
HTML DOM 树:
HTML DOM
通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

2. 通过 id 查找 HTML 元素

在 DOM 中查找 HTML 元素的最简单的方法,是通过使用元素的 id。

  1. var x=document.getElementById("intro");

3. 通过标签名查找 HTML 元素

本例查找 id="main" 的元素,然后查找 "main" 中的所有 <p> 元素:

  1. var x=document.getElementById("main");
  2. var y=x.getElementsByTagName("p");

注意:通过类名查找 HTML 元素在 IE 5,6,7,8 中无效。


DOM HTML

1. 改变HTML输出流

JavaScript 能够创建动态的 HTML 内容。
在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容。

  1. document.write()

注意:不要使用在文档加载之后使用 document.write()。这会覆盖该文档。

2. 改变HTML内容

修改 HTML 内容的最简单的方法时使用 innerHTML 属性。

  1. document.getElementById(id).innerHTML=new HTML

3. 改变HTML属性

使用以下语法

  1. document.getElementById(id).attribute=new value
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <img id="image" src="smiley.gif">
  5. <script>
  6. document.getElementById("image").src="landscape.jpg";
  7. </script>
  8. </body>
  9. </html>

DOM CSS

1. 改变HTML样式

使用以下语法

  1. document.getElementById(id).style.property=new style

  1. document.getElementById("p2").style.color="blue";

DOM 事件

HTML DOM 使 JavaScript 有能力对 HTML 事件做出反应。

1. 对事件做出反应

我们可以在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时。
HTML 事件的例子:

如下,当用户在 <h1> 元素上点击时,会改变其内容:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1 onclick="this.innerHTML='谢谢!'">请点击该文本</h1>
  5. </body>
  6. </html>

或如下

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script>
  5. function changetext(id)
  6. {
  7. id.innerHTML="谢谢!";
  8. }
  9. </script>
  10. </head>
  11. <body>
  12. <h1 onclick="changetext(this)">请点击该文本</h1>
  13. </body>
  14. </html>

2. HTML 事件属性

如需向 HTML 元素分配事件,可使用事件属性。
如向 button 元素分配 onclick 事件:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <button onclick="displayDate()">显示当前时间</button>
  5. <script>
  6. function displayDate()
  7. {
  8. document.getElementById("demo").innerHTML=Date();
  9. }
  10. </script>
  11. <p id="demo"></p>
  12. </body>
  13. </html>

3. 使用 HTML DOM 来分配事件

使用 JavaScript 来向 HTML 元素分配事件:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <button id="myBtn">显示当前时间</button>
  7. <script>
  8. document.getElementById("myBtn").onclick=function(){displayDate()};
  9. function displayDate()
  10. {
  11. document.getElementById("demo").innerHTML=Date();
  12. }
  13. </script>
  14. <p id="demo"></p>
  15. </body>
  16. </html>

4. onload 和 onunload 事件

onload 和 onunload 事件会在用户进入或离开页面时被触发。
onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。
onload 和 onunload 事件可用于处理 cookie。

  1. <body onload="checkCookies()">

5. onchange 事件

onchange 事件常结合对输入字段的验证来使用。
http://www.w3school.com.cn/tiy/t.asp?f=js_dom_event_onchange

6. onmouseover 和 onmouseout 事件

onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <div onmouseover="mOver(this)" onmouseout="mOut(this)" style="background-color:green;width:120px;height:20px;padding:40px;color:#ffffff;">把鼠标移到上面</div>
  5. <script>
  6. function mOver(obj)
  7. {
  8. obj.innerHTML="谢谢"
  9. }
  10. function mOut(obj)
  11. {
  12. obj.innerHTML="把鼠标移到上面"
  13. }
  14. </script>
  15. </body>
  16. </html>

7. onmousedown、onmouseup 以及 onclick 事件

onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。
首先当点击鼠标按钮时,会触发 onmousedown 事件,
当释放鼠标按钮时,会触发 onmouseup 事件,
最后,当完成鼠标点击时,会触发 onclick 事件。


DOM 节点

1. 创建新的HTML元素

如需向 HTML DOM 添加新元素,必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <div id="div1">
  5. <p id="p1">这是一个段落。</p>
  6. <p id="p2">这是另一个段落。</p>
  7. </div>
  8. <script>
  9. var para=document.createElement("p"); //创建新的p元素
  10. var node=document.createTextNode("这是新段落。"); //创建文本节点
  11. para.appendChild(node); //向p元素追加这个文本节点
  12. var element=document.getElementById("div1"); //找到一个已有的元素
  13. element.appendChild(para); //向这个已有的元素追加新元素
  14. </script>
  15. </body>
  16. </html>

输出结果为

  1. 这是一个段落。
  2. 这是另一个段落。
  3. 这是新段落。

2. 删除已有的HTML元素

如需删除 HTML 元素,必须首先获得该元素的父元素。

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <div id="div1">
  5. <p id="p1">这是一个段落。</p>
  6. <p id="p2">这是另一个段落。</p>
  7. </div>
  8. <script>
  9. var parent=document.getElementById("div1");
  10. var child=document.getElementById("p1");
  11. parent.removeChild(child);
  12. </script>
  13. </body>
  14. </html>

找到希望删除的子元素,然后使用其 parentNode 属性来找到父元素,可以在不引用父元素的情况下删除某个元素:

  1. var child=document.getElementById("p1");
  2. child.parentNode.removeChild(child);

JavaScript 对象

JS 对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...
此外,JavaScript 允许自定义对象。

1. 访问对象的属性

属性是与对象相关的值。

  1. objectName.propertyName

使用 String 对象的 length 属性来获得字符串的长度:

  1. var message="Hello World!";
  2. var x=message.length;

2. 访问对象的方法

方法是能够在对象上执行的动作。

  1. objectName.methodName()

使用 String 对象的 toUpperCase() 方法来将文本转换为大写:

  1. var message="Hello world!";
  2. var x=message.toUpperCase();

3. 创建JS对象

创建新对象有两种不同的方法:
1. 定义并创建对象的实例
2. 使用函数来定义对象,然后创建新的对象实例

这个例子创建了对象的一个新实例,并向其添加了四个属性:

  1. person=new Object();
  2. person.firstname="Bill";
  3. person.lastname="Gates";
  4. person.age=56;
  5. person.eyecolor="blue";

替代语法(使用对象 literals):

  1. person={firstname:"Bill",lastname:"gates",age:56,eyecolor:"blue"}

4. 使用对象构造器

使用函数来构造对象:

  1. function person(firstname,lastname,age,eyecolor)
  2. {
  3. this.firstname=firstname;
  4. this.lastname=lastname;
  5. this.age=age;
  6. this.eyecolor=eyecolor;
  7. }

5. 把方法添加到JS对象

  1. function person(firstname,lastname,age,eyecolor)
  2. {
  3. this.firstname=firstname;
  4. this.lastname=lastname;
  5. this.age=age;
  6. this.eyecolor=eyecolor;
  7. this.changeName=changeName;
  8. function changeName(name)
  9. {
  10. this.lastname=name;
  11. }
  12. }

JS 数字

JavaScript 只有一种数字类型。
可以使用也可以不使用小数点来书写数字。

  1. var pi=3.14; // 使用小数点
  2. var x=34; // 不使用小数点
  3. var y=123e5; // 12300000
  4. var z=123e-5; // 0.00123

1. 数字均为64位

JavaScript 中的所有数字都存储为根为 10 的 64 位(8 比特),浮点数。

2. 精度

整数(不使用小数点或指数计数法)最多为 15 位。
小数的最大位数是 17,但是浮点运算并不总是 100% 准确。

3. 八进制和十六进制

如果前缀为 0,则 JavaScript 会把数值常量解释为八进制数,如果前缀为 0 和 "x",则解释为十六进制数。

  1. var y=0377;
  2. var z=0xFF;

JS 字符串(String)

1. 计算字符串的长度

  1. var txt="Hello World!"
  2. document.write(txt.length)

2. 为字符串添加样式

  1. var txt="Hello World!"
  2. document.write("<p>Big: " + txt.big() + "</p>")
  3. document.write("<p>Small: " + txt.small() + "</p>")
  4. document.write("<p>Bold: " + txt.bold() + "</p>")
  5. document.write("<p>Italic: " + txt.italics() + "</p>")
  6. document.write("<p>Fontcolor: " + txt.fontcolor("Red") + "</p>")
  7. document.write("<p>Fontsize: " + txt.fontsize(16) + "</p>")
  8. document.write("<p>Link: " + txt.link("http://www.w3school.com.cn") + "</p>")

3. 替换字符串中的字符

  1. var str="Visit Microsoft!"
  2. document.write(str.replace(/Microsoft/,"Google"))

输出结果为

  1. Visit Google!

JS 日期(Date)

1. 定义日期

可以通过 new 关键词来定义 Date 对象。以下代码定义了名为 myDate 的 Date 对象:

  1. var myDate=new Date()

注释:Date 对象自动使用当前的日期和时间作为其初始值。

2. 操作日期

在下面的例子中,为日期对象设置了一个特定的日期 (2008 年 8 月 9 日):

  1. var myDate=new Date()
  2. myDate.setFullYear(2008,7,9)

注意:表示月份的参数介于 0 到 11 之间。也就是说,如果希望把月设置为 8 月,则参数应该是 7。

在下面的例子中,将日期对象设置为 5 天后的日期:

  1. var myDate=new Date()
  2. myDate.setDate(myDate.getDate()+5)

注意:如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。

3. 比较日期

日期对象也可用于比较两个日期。

  1. var myDate=new Date();
  2. myDate.setFullYear(2008,8,9);
  3. var today = new Date();
  4. if (myDate>today)
  5. {
  6. alert("Today is before 9th August 2008");
  7. }
  8. else
  9. {
  10. alert("Today is after 9th August 2008");
  11. }

JS 数组(Array)

数组对象的作用是:使用单独的变量名来存储一系列的值。

1. 定义数组

使用关键词 new 来创建数组对象。
下面的代码定义了一个名为 myArray 的数组对象:

  1. var myArray=new Array()

以下方法,可添加任意多的值,就像可定义需要的任意多的变量一样。

  1. var mycars=new Array()
  2. mycars[0]="Saab"
  3. mycars[1]="Volvo"
  4. mycars[2]="BMW"

以下方法,可使用一个整数自变量来控制数组的容量。

  1. var mycars=new Array(3)
  2. mycars[0]="Saab"
  3. mycars[1]="Volvo"
  4. mycars[2]="BMW"

也可以这样定义数组:

  1. var mycars=new Array("Saab","Volvo","BMW")

2. 访问数组

通过指定数组名以及索引号码,你可以访问某个特定的元素。

  1. document.write(mycars[2])

3. 修改已有的数组中的值

如需修改已有数组中的值,只要向指定索引号码添加一个新值即可。

  1. mycars[0]="Opel";

JS 逻辑(Boolean)

Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。

1. 创建Boolean对象

使用关键词 new 来定义 Boolean 对象。
下面的代码定义了一个名为 myBoolean 的逻辑对象:

  1. var myBoolean=new Boolean()

注释:如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 "false" 时)


JS 算数(Math)

Math(算数)对象的作用是:执行常见的算数任务。

1. 算数值

JavaScript 提供 8 种可被 Math 对象访问的算数值.

  • 常数
  • 圆周率
  • 2 的平方根
  • 1/2 的平方根
  • 2 的自然对数
  • 10 的自然对数
  • 以 2 为底的 e 的对数
  • 以 10 为底的 e 的对数

这是在 Javascript 中使用这些值的方法。(与上面的算数值一一对应)

  • Math.E
  • Math.PI
  • Math.SQRT2
  • Math.SQRT1_2
  • Math.LN2
  • Math.LN10
  • Math.LOG2E
  • Math.LOG10E

2. 算数方法

除了可被 Math 对象访问的算数值以外,还有几个函数(方法)可以使用。
下面的例子使用了 Math 对象的 round 方法对一个数进行四舍五入。

  1. document.write(Math.round(4.7))

下面的例子使用了 Math 对象的 random() 方法来返回一个介于 0 和 1 之间的随机数。

  1. document.write(Math.random())

下面的例子使用了 Math 对象的 max()和min() 方法来返回两个数中的最大数和最小数。

  1. document.write(Math.max(5,7))
  2. document.write(Math.min(-3,5))
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注