JavaScript教程.docx
《JavaScript教程.docx》由会员分享,可在线阅读,更多相关《JavaScript教程.docx(38页珍藏版)》请在冰豆网上搜索。
JavaScript教程
01章JavaScript入门
JavaScript具有相当强大的页面处理能力,是衡量一个程序员水平高低的重要标志。
学习JavaScript首先要了解JavaScript的“对象(object)、类(class)、对象标识(id)、对象名称(name)”等重要概念之间的区别,熟练掌握基本语法。
学习JavaScript之前必须首先学会HTML和CSS。
仅仅从网上搜索下载一些技巧便认为自己掌握了JavaScript的人决非是标准的程序员,只会通过一些工具而不懂概念语法之人,决不是一位好程序员,甚至根本够不上程序员的资格。
不同的浏览器所支持的JavaScript的语法和功能也略有不同,不同的JavaScript版本之间也同样有功能区别,甚至浏览器的不同版本之间也会有升级的问题。
因此这儿只以IE6.0为基准来介绍。
JavaScript的写法
--
JavaScript语句
不支持JavaScript的注释。
//-->
--...//-->是HTML的注释,JavaScript的注释和Java相同,单行注释//,多行注释用/*...*/。
大小文字也是有区别的。
JavaScript的版本选择
--
JavaScript语句
//-->
这是HTML4.1以前的写法,现在一般不用language属性,而用type属性
JavaScript保存到外部文件
src属性后的内容是带路径的文件名,后缀一般用.js。
如果保存在多个文件中,可重复使用这一语句。
JavaScript对事件操作的声明
如果要用onClick等事件时,必须用meta元素的http-equiv来声明其属性值为:
Content-Script-Type。
JavaScript嵌在HTML中的写法
!
"onclick="window.alert('Hello!
!
');">
alert('Hello!
!
');">ClickMe
如果要用onClick等事件时,必须用meta元素的http-equiv来声明其属性值为:
Content-Script-Type。
JavaScript执行时序
alert(documet.title);
Mytest
alert(documet.title);
alert(document.myFrm.test.value);
alert(document.myFrm.test.value);
//-->
02章概念的理解
学习JavaScript首先要了解JavaScript的“对象(object)、类(class)、对象标识(id)、对象名称(name)、动态页面(DynamicPage)”等重要概念之间的区别,熟练掌握基本语法。
学习JavaScript之前必须首先学会HTML和CSS。
对象
对象主要包括Html中各Tag对象和JavaScript中用于运算控制的诸如String对象、Date对象等。
Html文中的一段文字本身不是对象,但用Tag如...将文字括起来,这就变成了对象,也就可以对其进行操作。
如果对某一段Html文你不需要用特殊意义的Tag括起来时,可以用
或
来将Html文括起来进行控制。
对象标识
每个对象内部都可指定一个标识符,JavaScript便可用来对其进行控制。
Sample1
Sample2
Sample2
对象名称
与服务器处有数据交换的对象基本都有name属性,如:
、、、
HTTP在传送数据时将name一道打包在requst或response里面。
而ID是纯客户端的东西,服务器端无法根据ID来取得数据。
Sample1
class
class是CSS的内容,是用来控制对象的位置、尺寸、段落、字体、颜色等。
学习JavaScript重点就是要控制这些内容。
.title{
font-size:
medium;
margin:
0;
padding:
0.3em;
color:
#ffffff;
background-color:
#000000;
}
动态页面
动态页面是指用JavaScript对Html文(即页面)的对象的CSS属性值进行控制,从而达到页面能动态地变化的效果。
方法和属性
属性和方法相当于谜题和函数,变量和函数是对整个程序而言,方法和属性是对对象而言。
属性和方法被引用时,前面要加对象。
当所处的位置正是该对象内时,对象吸以省略。
window.alert("Hello");//对话框
navigator.appName//浏览器的名称
03章运算符
JavaScript的运算符与Java基本相同,因为是Script,在数据类型的限制方面要松散的多。
赋值、加减乘除、余除
“=、+、-、*、/、%”分别代表“赋值、加减乘除、余除”
xx=3+2;//xx的值为5
xx=3-2;//xx的值为:
1
xx=3*2;//xx的值为:
6
xx=3/2;//xx的值为:
1.5
xx=3%2;//xx的值为:
1
增1减1
“++a、a++、--a、a--”分别代表“前增1、后增1、前减1、后减1”
a=5;b=a++;//a的值为:
6、b的值为:
5
a=5;b=++a;//a的值为:
6、b的值为:
6
a=5;b=a--;//a的值为:
4、b的值为:
5
a=5;b=--a;//a的值为:
4、b的值为:
4
字符串运算
作为运算符只有“+”来连接2个字符串,至于查找、截取等功能要用字符串类的各种方法实现。
注意:
字符串与其它类型相加时,其它类型将被自动转换为字符串类型,再相加。
xx="abcd"+"xyz"//xx的值为:
"abcdxyz"
xx="1234"+56//xx的值为:
"123456"
vardd=newDate(1999,11,31);
xx="今天是="+dd//xx的值为:
"今天是=FriDec3100:
00:
00UTC+09001999"
逻辑运算符
“&&、||、!
”分别表示“与、或、非”
if((1<=mon)&&(mon<=12)){
alert("xxisbetween1and12.");
}
if((xx=="ABC")||(xx=="abc")){
alert("xxisABC.");
}
if(!
(xx==5)){
alert("xxisnotfive.");
}
位运算符
“&、|、^、~”分别表示“与、或、异或、取反”
xx=0x87654321&0xffff0000;//xx的值为0x87650000
xx=0x87654321|0xffff0000;//xx的值为0xffff4321
xx=0xffff0000^0xff00ff00;//xx的值为0x00ffff00
xx=~0xffff0000;//xx的值为0x0000ffff
“<<、>>、>>>”分别表示“左移、右移、补0右移”
xx=0x12345678<<8;//xx的值为0x34567800
xx=0x12345678>>8;//xx的值为0x00123456
xx=0x87654321>>8;//xx的值为0xff876543
xx=0x87654321>>>8;//xx的值为0x00876543
比较运算符
相等(==)、不等(--)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
if(xx==5){
alert("xxisfive.");
}
if(yy!
="ABC"){
alert("yyisnotABC.");
}
if(xx==null){
alert("xxisNull.");
}
if(yy!
=null){
alert("yyisnotNull.");
}
if(xx<123){
alert("xxissmallerthan123");
}
当类型不一致时,将被自动转换为字符串类型。
如果不需要自动转换,可以用“===和!
==”来代替“==”和“!
=”。
if(123==123){...}//true(真)
if("123"=="123"){...}//true(真)
if("123"==123){...}//true(真)
if(123=="123"){...}//true(真)
if(123===123){...}//true(真)
if("123"==="123"){...}//true(真)
if("123"===123){...}//false(假)
if(123==="123"){...}//false(假)
复合运算符
加减乘除并赋值(+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>=)
xx+=5;//xx=xx+5;
xx-=5;//xx=xx-5;
xx*=5;//xx=xx*5;
xx/=5;//xx=xx/5;
xx%=5;//xx=xx%5;
xx&=0xff;//xx=xx&0xff;
xx|=0xff;//xx=xx|0xff;
xx^=0xff;//xx=xx^0xff;
xx<<=8;//xx=xx<<8;
xx>>=8;//xx=xx>>8;
xx>>>=8;//xx=xx>>>8;
条件运算符
“exp1?
exp2:
exp3”这和Ifelse语句相同功能但用法不同,这是运算符。
yy=(xx>=5)?
"big":
"small";//若xx>5,则yy的值为:
"big";若xx<=5,则yy的值为:
"small"
逗号分隔符
主要用于函数的参数之间分隔,for循环语句中也用来分隔语句。
for(i=0,j=0;i<10;i++){
......
}
null时注意
当对象为null时,该对象的方法和属性都不能使用,要特别注意。
运算符的优先顺序
优先顺序
运算符
↑
高
低
↓
数组([])括弧(())
増1減1(++--)负号(-)取反(~)非(!
)
乗除余(*/%)
加減(+-)文字列连接(+)
位移(<<>><<<)
比较(<<=>=>)
比较(==!
====!
==)
AND(&)
XOR(^)
OR(|)
与(&&)
或(||)
条件(?
:
)
赋值(=)复合(+=等)
逗号(,)
04章基本语法
JavaScript的流程控制语法基本与Java类似。
当控制语句部分只有一句时,{}可以省略。
条件分支(if...else...)
if(条件){
......
}elseif(条件){
......
}else{
......
}
if(n<10){
alert("SMALL");
}
if(n<10){
alert("SMALL");
}else{
alert("BIG");
}
if(n<10){
alert("SMALL");
}elseif(n>20){
alert("BIG");
}else{
alert("NORMAL");
}
条件分支(switch)
switch(表达式){
case表达式的值1:
...
break;
case表达式的值2:
...
break;
default:
...
break;
}
switch(xx){
case1:
alert("ONE");
break;
case2:
alert("TWO");
break;
case3:
case4:
alert("THREEorFOUR");
break;
default:
alert("OTHER");
break;
}
循环(while)
while(条件){
......
}
n=0;
while(n<10){
document.write(n);
n++;
}
循环(do)
do{
......
}while(条件)
n=0;
do{
document.write(n);
n++;
}while(n<10);
循环(for)
for(初始条件;终止条件;条件改变语句){
......
}
for(i=0;i<10;i++){
document.write(i);
}
for(variableinarray){//数组的情况下,也可这样使用
......
}
xx=newArray(3);
xx[0]="A";
xx[1]="B";
xx[2]="C";
for(iinxx){
document.write(xx[i]);
}
中断(break)
break;//跳到循环结束之后
breaklabel;//跳到循环外的某个标签处
for(i=0;i<10;i++){
if(i==5){
break;
}
document.write(i);
}
abc:
for(i=0;i<10;i++){
for(j=0;j<10;j++){
xx=i*10+j;
if(xx>20){
breakabc;
}
document.write(xx+"
");
}
}
继续下一轮循环(continue)
continue;//跳到循环内的开始处
continuelabel;//跳到某个标签处(循环内外都可以)
for(i=0;i<10;i++){
if(i==5){
continue;
}
document.write(i);
}
abc:
for(i=0;i<10;i++){
for(j=0;j<10;j++){
xx=i*10+j;
if(xx>20){
continueabc;
}
document.write(xx+"
");
}
}
对象操作(with)
with(对象){
......
}
with(document){
write(bgColor);write(fgColor);
}
05章数据类型
虽然JavaScript没有明确地区分类型,我们仍要搞清楚以下几点:
数值型和字符串型是最常见的基本类型、字符串同时作为对象处理的。
日期型也是作为对象来处理的。
布尔型一向简单,而数组需要重点掌握。
数值型
JJavaScript的数值型包括10进制、8进制、16进制、实数、小数、整数等都可以使用。
O开头的整数是8进制,0x开头的整数是16进制。
12345//10进制的12345
1.23//实数的1.23
1.23e4//1.23×10的4次方
1.23E4//1.23×10的4次方
012//8进制的12(10进制的10)
0x1b//16进制的1B(10进制的27)
字符串型
字符串的内容很多,专门作为一章来学习。
这儿简单一提。
str="这是字符串";
布尔型
布尔型只有2个值:
true和false。
True、TRUE、False、FALSE等都是错误的写法。
作为条件比较时要特别注意:
◆数值的0和-0,特殊变量的null、false、NaN、undefined、空字符串("")都作为false处理
◆其它都作为true处理
xx=(3=4);//xx的值为:
false
xx=(100>50);//xx的值为:
true
日期型
日期型的内容也较多,专门作为一章来学习。
这儿简单一提。
dd=newDate(1999,11,31,23,59,59,999);
数组型
严格地说数组不能算基本数据类型,数组在任何语言中都是必须掌握的。
xx=newArray(3);
xx[0]="Sun";
xx[1]="Mon";
xx[6]="Sat";
yy=newArray("Sun","Mon","Thu");
对象类
用java的思想来说,一切都是类。
事实上数值型和布尔型也都封装了相应的类,即Number和Boolean。
因过于简单,不用也罢。
xx=newNumber(123);//等价于:
xx=123;
xx=newNumber("123");//等价于:
xx=palseInt("123");
xx.toString();//转换成字符串,事实上,在使用时JavaScript会自动转换。
xx.toString(16);//转换成16进制的字符串:
7B
yy=newBoolean(true);//等价于:
yy=true;
另外,Number类中封装了一些可以直接使用的常数。
Number.NaN//不正确的数值
Number.MAX_VALUE//JavaScript可用的最大数
Number.MIN_VALUE//JavaScript可用的最小数
Number.POSITIVE_INFINITY//JavaScript正数无穷大
Number.NEGATIVE_INFINITY//JavaScript负数无穷小
常量
null 空
undefined 未定义
NaN 非数值
Infinity 无穷大数值
JavaScript将所有整数和小数都转换为浮点小数,当用不正确的类型数据进行数学运算时就转换成NaN
正数大到JavaScript无法表示时,便转换成PositiveInfinity
负数小到JavaScript无法表示时,便转换成NegativeInfinity
avaScript是区分正0和负0的。
null不属于任何一种数据类型,表示“没有值”。
你可以将null赋给某一变量,
这等于删除这个变量的值,但却保留这个变量的定义。
。
当null参于运算时便产生undefined结果。
06章字符串类型
字符串类型在在在论何语言都是很重要的,JavaScript中的字符串替换功能要用到正则表达式,必须熟练掌握。
新建字符串
几乎所有类型都自动转换为字符串。
字符串既可以用String类来生成,也可以用各种类型的对象的toString()方法来转换。
xx="abc";
xx=newString("abd");//String类
yy=123;
xx=yy.toString();//Integer类的toString()方法
yy=newDate(2004,11,25);
xx=yy.toString();//Date类的toString()方法
xx="abc"+123+"xyz";//123自动转换为字符串
转意字符
以下的转意字符要注意。
例:
在对话框中输出2行文字:
alert('你好!
\n欢迎光临。
');
\n-换行
\r-回车
\f-フォームフィード
\b-退格字符
\t-Tab字符
\'-单引号(')
\"-双引号(")
\\-反斜杠(\)
\nnn-8进制(例"A"写成:
"\101")
\xnn-16进制(例"A"写成:
\x41")
\unnnn-Unicode字符(例"あ"写成:
"\u3042")
字符串的长度
string.length//取字符串的长度,汉字和英数字都作为1个Unicode字符。
xx="abc五笔字型".length;//xx的值为:
7
xx="abc\n五笔字型".length;//xx的值为:
8
取字符串的部分内容
string.charAt(n)//取第n个字符
xx="abcd".charAt
(2)//xx的值为:
"c"
xx="静坐常思自己过".charAt
(2)//xx的值为:
"常