javascript笔记

JavaScript可以:

1、写入 HTML 输出(document.write("<h1>This is a heading</h1>");)

2、对事件作出反应(<button type="button" onclick="alert('Welcome!')">点击这里</button>)

3、改变 HTML 内容(x=document.getElementById("demo")  //查找元素 x.innerHTML="Hello JavaScript"; //改变内容)

4、改变 HTML 图像

 

function changeImage()
{
element=document.getElementById('myimage')
if (element.src.match("bulbon"))
  {
  element.src="/i/eg_bulboff.gif";
  }
else
  {
  element.src="/i/eg_bulbon.gif";
  }
}

 

5、改变 HTML 样式(x=document.getElementById("demo")  //找到元素 x.style.color="#ff0000"; //改变样式)

6、 验证输入(if isNaN(x) {alert("Not Numeric")};)

 

脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中。

外部的 JavaScript

JavaScript 函数和事件

会在页面加载时执行或某个事件发生时执行代码;

JavaScript 语句

JavaScript 语句向浏览器发出的命令。语句的作用是告诉浏览器该做什么。

JavaScript 对大小写敏感。

JavaScript 对大小写是敏感的。

当编写 JavaScript 语句时,请留意是否关闭大小写切换键。

函数 getElementById 与 getElementbyID 是不同的。

同样,变量 myVariable 与 MyVariable 也是不同的。

空格

JavaScript 会忽略多余的空格。您可以向脚本添加空格,来提高其可读性。下面的两行代码是等效的:

对代码行进行折行

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

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

不过,您不能像这样折行:

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

您知道吗?

提示:JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译

 JavaScript 注释可用于提高代码的可读性

单行注释以 // 开头。

多行注释以 /* 开始,以 */ 结尾。注释用于阻止其中一条代码行的执行(可用于调试)。

 

JavaScript 变量

与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y)。

变量可以使用短名称(比如 x 和 y),也可以使用描述性更好的名称(比如 age, sum, totalvolume)。

  • 变量必须以字母开头
  • 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
  • 变量名称对大小写敏感(y 和 Y 是不同的变量)

提示:JavaScript 语句和 JavaScript 变量都对大小写敏感。

您可以在一条语句中声明很多变量。该语句以 var 开头,并使用逗号分隔变量即可; 在计算机程序中,经常会声明无值的变量。未使用值来声明的变量,其值实际上是 undefined。在执行过以下语句后,变量 carname 的值将是 undefined;

声明也可横跨多行:

var name="Gates",
age=56,
job="CEO";

果重新声明 JavaScript 变量,该变量的值不会丢失:

在以下两条语句执行后,变量 carname 的值依然是 "Volvo":

var carname="Volvo";
var carname;

JavaScript 数据类型

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

JavaScript 变量有很多种类型,但是现在,我们只关注数字和字符串。

JavaScript 拥有动态类型

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:

JavaScript 数组

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

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

或者 (condensed array):

var cars=new Array("Audi","BMW","Volvo");

 也可以:var cars=["Audi","BMW","Volvo"];

数组下标是基于零的;

JavaScript 对象

var person={firstname:"Bill", lastname:"Gates", id:5566};

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

实例

name=person.lastname;
name=person["lastname"];

 

Undefined 和 Null

Undefined 这个值表示变量不含有值。

可以通过将变量的值设置为 null 来清空变量;

 

声明变量类型

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

var carname=new String;
var x=      new Number;
var y=      new Boolean;
var cars=   new Array;
var person= new Object;

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

JavaScript 对象

JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。

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

属性和方法

属性是与对象相关的值。

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

JavaScript 中的对象

在 JavaScript 中,对象是数据(变量),拥有属性和方法。

js中申明一个string型的txt变量时,默认就有:

属性:

txt.length=5

方法:

txt.indexOf()

txt.replace()

txt.search()
 

访问对象的属性

 objectName.propertyName

访问对象的方法

objectName.methodName() 

JavaScript 函数

局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。

您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。

只要函数运行完毕,本地变量就会被删除。

全局 JavaScript 变量

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

JavaScript 变量的生存期

JavaScript 变量的生命期从它们被声明的时间开始。

局部变量会在函数运行以后被删除。

全局变量会在页面关闭后被删除。

向未声明的 JavaScript 变量来分配值

如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。

这条语句:

carname="Volvo";

将声明一个全局变量 carname,即使它在函数内执行。

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title>js_test1</title>

    </head>
    <script>



        function globeVar() {
            a = "bbb";
        }
        function changeGlobe() {
            a = "aaa";
        }
        function getGlobeVar() {
            alert(a);
        }
        
        
        
        
    </script>
    <body>

        <input type="button" value="generate global variable" onclick="globeVar()" />
        <input type="button" value="change global variable" onclick="changeGlobe()" />
        <input type="button" value="get global variable" onclick="getGlobeVar()" />
    </body>
</html>

 

 

JavaScript 算术运算符

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

给定 y=5,下面的表格解释了这些算术运算符:

运算符描述例子结果
+ x=y+2 x=7
- x=y-2 x=3
* x=y*2 x=10
/ x=y/2 x=2.5
% 求余数 (保留整数) x=y%2 x=1
++ 累加 x=++y x=6
-- 递减 x=--y x=4

 

 

 

 

 

 

 

JavaScript 赋值运算符

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

给定 x=10y=5,下面的表格解释了赋值运算符:

运算符例子等价于结果
= x=y   x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0

 

 

 

 

 

 

比较运算符

比较和逻辑运算符用于测试 true 或 false。

比较运算符在逻辑语句中使用,以测定变量或值是否相等。

给定 x=5,下面的表格解释了比较运算符:

运算符描述例子
== 等于 x==8 为 false
=== 全等(值和类型) x===5 为 true;x==="5" 为 false
!= 不等于 x!=8 为 true
> 大于 x>8 为 false
< 小于 x<8 为 true
>= 大于或等于 x>=8 为 false
<= 小于或等于 x<=8 为 true

 

 

 

 

 

 

 

逻辑运算符

逻辑运算符用于测定变量或值之间的逻辑。

给定 x=6 以及 y=3,下表解释了逻辑运算符:

运算符描述例子
&& and (x < 10 && y > 1) 为 true
|| or (x==5 || y==5) 为 false
! not !(x==y) 为 true

 

 

 

 

条件运算符

例子

greeting=(visitor=="PRES")?"Dear President ":"Dear "; 

JavaScript If...Else 语句

JavaScript Switch 语句

default所在位置对控制流程有很重要的作用;比如放在当中的时候,配合break使用有不错的功能,当然也非常容易出错;

JavaScript For 循环

For/In 循环

JavaScript for/in 语句循环遍历对象的属性:

实例

var person={fname:"John",lname:"Doe",age:25};

for (x in person)
  {
  txt=txt + person[x];
  }

JavaScript 标签

正如您在 switch 语句那一章中看到的,可以对 JavaScript 语句进行标记。

如需标记 JavaScript 语句,请在语句之前加上冒号:

label:
语句

break 和 continue 语句仅仅是能够跳出代码块的语句。

语法

break labelname;

continue labelname;

实例

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

JavaScript 错误 - Throw、Try 和 Catch

JavaScript 语句 trycatch 是成对出现的。

实例

在下面的例子中,我们故意在 try 块的代码中写了一个错字。

catch 块会捕捉到 try 块中的错误,并执行代码来处理它。

<!DOCTYPE html>
<html>
<head>
<script>
var txt="";
function message()
{
try
  {
  adddlert("Welcome guest!");
  }
catch(err)
  {
  txt="There was an error on this page.\n\n";
  txt+="Error description: " + err.message + "\n\n";
  txt+="Click OK to continue.\n\n";
  alert(txt);
  }
}
</script>
</head>

<body>
<input type="button" value="View message" onclick="message()">
</body>

</html>

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

E-mail 验证

下面的函数检查输入的数据是否符合电子邮件地址的基本语法。

意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:

function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2) 
  {alert(alerttxt);return false}
else {return true}
}
}

 

下面是连同 HTML 表单的完整代码:

<html>
<head>
<script type="text/javascript">
function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@")
dotpos=value.lastIndexOf(".")
if (apos<1||dotpos-apos<2) 
  {alert(alerttxt);return false}
else {return true}
}
}

function validate_form(thisform)
{
with (thisform)
{
if (validate_email(email,"Not a valid e-mail address!")==false)
  {email.focus();return false}
}
}
</script>
</head>

<body>
<form action="submitpage.htm"onsubmit="return validate_form(this);" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit"> 
</form>
</body>
</html>

把方法添加到 JavaScript 对象

方法只不过是附加在对象上的函数。

在构造器函数内部定义对象的方法:

function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;

this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}

所有 JavaScript 数字均为 64 位

JavaScript 不是类型语言。与许多其他编程语言不同,JavaScript 不定义不同类型的数字,比如整数、短、长、浮点等等。

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

精度

整数(不使用小数点或指数计数法)最多为 15 位。

小数的最大位数是 17,但是浮点运算并不总是 100% 准确:

八进制和十六进制

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

实例

var y=0377;
var z=0xFF;

提示:绝不要在数字前面写零,除非您需要进行八进制转换。

数字属性和方法

属性:

  • MAX VALUE
  • MIN VALUE
  • NEGATIVE INFINITIVE
  • POSITIVE INFINITIVE
  • NaN
  • prototype
  • constructor

方法:

  • toExponential()
  • toFixed()
  • toPrecision()
  • toString()
  • valueOf()
  • 几乎所有的js内置对象都有prototype方法,如Date.prototype之后可以为Date对象添加属性或者方法;

JavaScript 字符串(String)对象

JavaScript Math(算数)对象

JavaScript Boolean(逻辑)对象

JavaScript Array(数组)对象

JavaScript Date(日期)对象

JavaScript Number 对象

JavaScript RegExp 对象

创建 RegExp 对象的语法:

new RegExp(pattern, attributes);

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。

http://www.w3school.com.cn/js/jsref_obj_regexp.asp

JavaScript 全局对象参考手册

全局属性和函数可用于所有内建的 JavaScript 对象。

顶层函数(全局函数)

FF: Firefox, IE: Internet Explorer

函数描述FFIE
decodeURI() 解码某个编码的 URI。 1 5.5
decodeURIComponent() 解码一个编码的 URI 组件。 1 5.5
encodeURI() 把字符串编码为 URI。 1 5.5
encodeURIComponent() 把字符串编码为 URI 组件。 1 5.5
escape() 对字符串进行编码。 1 3
eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。 1 3
getClass() 返回一个 JavaObject 的 JavaClass。    
isFinite() 检查某个值是否为有穷大的数。 1 4
isNaN() 检查某个值是否是数字。 1 3
Number() 把对象的值转换为数字。 1  
parseFloat() 解析一个字符串并返回一个浮点数。 1 3
parseInt() 解析一个字符串并返回一个整数。 1 3
String() 把对象的值转换为字符串。 1  
unescape() 对由 escape() 编码的字符串进行解码。 1 3

 

 

 

 

 

 

 

顶层属性(全局属性)

FF: Firefox, IE: Internet Explorer

方法描述FFIE
Infinity 代表正的无穷大的数值。 1 4
java 代表 java.* 包层级的一个 JavaPackage。    
NaN 指示某个值是不是数字值。 1 4
Packages 根 JavaPackage 对象。    
undefined 指示未定义的值。 1 5.5

 

 

 

 

 

 

 

 

posted @ 2013-09-04 17:55  roilat  阅读(184)  评论(0)    收藏  举报