javascript 教程.docx
《javascript 教程.docx》由会员分享,可在线阅读,更多相关《javascript 教程.docx(39页珍藏版)》请在冰豆网上搜索。
![javascript 教程.docx](https://file1.bdocx.com/fileroot1/2023-1/29/58f384e3-f03d-4729-b8e0-4a08fb14810f/58f384e3-f03d-4729-b8e0-4a08fb14810f1.gif)
javascript教程教程JavaScript参考教程本教程为未接触过JavaScript的读者提供了比较完善的初级知识,但只限于初级知识:
所有与动态网页密切相关的JavaScript在本教程中都未提及,包括动态定位、动画、让文档接收更多事件(document.captureEvent()等;所有在IE及Netscape中有不同的JavaScript都尽少提及。
本教程在结构上设计的比较像一个参考(reference),有参考的规划性,但又有教程的性质,所以我把它叫做“参考教程”。
本教程不面向连HTML都没有学好的读者。
本教程中会多次提到有关HTML的内容,并不会对这些HTML的知识做讲解。
未接触过JavaScript的读者看完此教程应该对JavaScript有比较深的掌握。
接触过JavaScript的读者可以当此教程为参考来用。
本教程对JavaScript的基础有比较详细的讲述,对如对象、事件之类比较深入的知识则讲述得比较浅易,型如参考。
如果读者有一定的理解能力和消化能力,相信在掌握了基础部分后,在学习进阶的章节时不会遇到什么困难。
本教程所用的参考式结构,使教程看起来很统一在讲述语句的时候,对语句以外的任何知识只字不提;在讲述对象的时候,又对对象以外的任何知识只字不提。
如果你想快速学会JavaScript,你可能要掌握“跳章学习”的方法。
左边可以看到本教程整个结构树。
可以看到共分5章,前两章是基础知识,第三第四章是进阶知识对象,第五章是针对两个对象框架和Cookie进行详细的讲解,作为第三第四章中内容的补充。
理解能力不好或者依赖性强的读者可能学到JavaScript的核心对象化编程时会觉得力不从心,因为它们不习惯这种参考式的文章;急于求成的读者可能对本教程非常统一的参考式结构觉得厌恶,因为他们必须学到第三第四章才可以做一个小小的JavaScript。
本教程缺乏例子。
读者要有很强的“悟性”和很愿意自己去实践,才可以很好的掌握JavaScript。
本教程的作者Micro.只此一人,伟大吗?
除了我,还有两本JavaScript的书,一本是JS1.1教程,但是本教程编了不久书被别人借去了;另一本是很浅的参考,如果照搬,大家都不会明白说了什么。
还有两个浏览器,用来实践;还有英文版的JavaScript参考、教程,来自MSDN和Netscape网。
还有一个脑,两只手,一台电脑JavaScript有什么特点JavaScript使网页增加互动性。
JavaScript使有规律地重复的HTML文段简化,减少下载时间。
JavaScript能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由CGI验证。
JavaScript的特点是无穷无尽的,只要你有创意。
Java与JavaScript有什么不同很多人看到Java和JavaScript都有“Java”四个字,就以为它们是同一样东西,连我自己当初也是这样。
其实它们是完完全全不同的两种东西。
Java,全称应该是JavaApplet,是嵌在网页中,而又有自己独立的运行窗口的小程序。
JavaApplet是预先编译好的,一个Applet文件(.class)用Notepad打开阅读,根本不能理解。
JavaApplet的功能很强大,可以访问http、ftp等协议,甚至可以在电脑上种病毒(已有先例了)。
相比之下,JavaScript的能力就比较小了。
JavaScript是一种“脚本”(“Script”),它直接把代码写到HTML文档中,浏览器读取它们的时候才进行编译、执行,所以能查看HTML源文件就能查看JavaScript源代码。
JavaScript没有独立的运行窗口,浏览器当前窗口就是它的运行窗口。
它们的相同点,我想只有同是以Java作编程语言一点了。
开发JavaScript该用什么软件一个JavaScript程序其实是一个文档,一个文本文件。
它是嵌入到HTML文档中的。
所以,任何可以编写HTML文档的软件都可以用来开发JavaScript。
在此我推荐大家用FrontPage2000附带的Microsoft脚本编辑器(在FrontPage菜单|工具|宏|Microsoft脚本编辑器)。
它是个像VisualBasic/C+一样的程序开发器,能对正在输入的语句作出简要提示。
配合FrontPage2000,使工作量大大减少。
JavaScipt基本教程之JavaScript语言的基础在什么地方插入JavaScriptJavaScript可以出现在HTML的任意地方。
使用标记,你可以在HTML文档的任意地方插入JavaScript,甚至在之前插入也不成问题。
不过如果要在声明框架的网页(框架网页)中插入,就一定要在之前插入,否则不会运行。
基本格式第二行和第四行的作用,是让不懂标记的浏览器忽略JavaScript代码。
一般可以省略,因为现在想找不懂Script的浏览器,恐怕就连博物馆里也没有了。
第四行前边的双反斜杠“/”是JavaScript里的注释标号,以后将学到。
另外一种插入JavaScript的方法,是把JavaScript代码写到另一个文件当中(此文件通常应该用“.js”作扩展名),然后用格式为“”的标记把它嵌入到文档中。
注意,一定要用“”标记。
参考标记还有一个属性:
language(缩写lang),说明脚本使用的语言。
对于JavaScript,请用“language=JavaScript”。
参考相对于标记,还有一个标记。
标记所包含的,是服务器端(ServerSide)的脚本。
本教程只讨论客户器端(ClientSide)的JavaScript,也就是用标记包含的脚本。
如果想在浏览器的“地址”栏中执行JavaScript语句,用这样的格式:
javascript:
这样的格式也可以用在连接中:
ahref=javascript:
.JavaScript基本语法每一句JavaScript都有类似于以下的格式:
;其中分号“;”是JavaScript语言作为一个语句结束的标识符。
虽然现在很多浏览器都允许用回车充当结束符号,培养用分号作结束的习惯仍然是很好的。
语句块语句块是用大括号“”括起来的一个或n个语句。
在大括号里边是几个语句,但是在大括号外边,语句块是被当作一个语句的。
语句块是可以嵌套的,也就是说,一个语句块里边可以再包含一个或多个语句块。
JavaScript中的变量什么是变量从字面上看,变量是可变的量;从编程角度讲,变量是用于存储某种/某些数值的存储器。
所储存的值,可以是数字、字符或其他的一些东西。
变量的命名变量的命名有以下要求:
只包含字母、数字和/或下划线;要以字母开头;不能太长(其实有什么人喜欢使用又长又臭的名字呢?
);不能与JavaScript保留字(KeyWords,ReservedWords,数量繁多,不能一一列出;凡是可以用来做JavaScript命令的字都是保留字)重复。
而且,变量是区分大小写的,例如,variable和Variable是两个不同的变量。
不仅如此,大部分命令和“对象”(请参阅“对象化编程”章)都是区分大小写的。
提示给变量命名,最好避免用单个字母“a”“b”“c”等,而改用能清楚表达该变量在程序中的作用的词语。
这样,不仅别人能更容易的了解你的程序,而且你在以后要修改程序的时候,也很快会记得该变量的作用。
变量名一般用小写,如果是由多个单词组成的,那么第一个单词用小写,其他单词的第一个字母用大写。
例如:
myVariable和myAnotherVariable。
这样做仅仅是为了美观和易读,因为JavaScript一些命令(以后将用更具体的方法阐述“命令”一词)都是用这种方法命名的:
indexOf;charAt等等。
变量需要声明没有声明的变量不能使用,否则会出错:
“未定义”。
声明变量可以用:
var=;var我们接触的第一个关键字(即保留字)。
这个关键字用作声明变量。
最简单的声明方法就是“var;”,这将为准备内存,给它赋初始值“null”。
如果加上“=”,则给赋予自定的初始值。
数据类型变量可以用的数据类型有:
整型只能储存整数。
可以是正整数、0、负整数,可以是十进制、八进制、十六进制。
八进制数的表示方法是在数字前加“0”,如“0123”表示八进制数“123”。
十六进制则是加“0x”:
“0xEF”表示十六进制数“EF”。
浮点型即“实型”,能储存小数。
有资料显示,某些平台对浮点型变量的支持不稳定。
没有需要就不要用浮点型。
字符串型是用引号“”、“”包起来的零个至多个字符。
用单引号还是双引号由你决定。
跟语文一样,用哪个引号开始就用哪个结束,而且单双引号可嵌套使用:
这里是JavaScript教程。
不过跟语文不同的是,JavaScript中引号的嵌套只能有一层。
如果想再多嵌一些,你需要转义字符:
转义字符由于一些字符在屏幕上不能显示,或者JavaScript语法上已经有了特殊用途,在要用这些字符时,就要使用“转义字符”。
转义字符用斜杠“”开头:
单引号、双引号、n换行符、r回车(以上只列出常用的转义字符)。
于是,使用转义字符,就可以做到引号多重嵌套:
Micro说:
这里是JavaScript教程。
布尔型常用于判断,只有两个值可选:
true(表“真”)和false(表“假”)。
true和false是JavaScript的保留字。
它们属于“常数”。
对象关于对象,在“对象化编程”一章将详细讲到。
由于JavaScript对数据类型的要求不严格,一般来说,声明变量的时候不需要声明类型。
而且就算声明了类型,在过程中还可以给变量赋予其他类型的值。
声明类型可以用赋予初始值的方法做到:
varaString=;这将把aString定义为具有空值的字符串型变量。
varanInteger=0;这将把anInteger定义为值为0的整型。
变量的赋值一个变量声明后,可以在任何时候对其赋值。
赋值的语法是:
=;其中“=”叫“赋值符”,它的作用是把右边的值赋给左边的变量。
下一节将讨论到表达式。
JavaScript常数有下列几个:
null一个特殊的空值。
当变量未定义,或者定义之后没有对其进行任何赋值操作,它的值就是“null”。
企图返回一个不存在的对象时也会出现null值。
NaN“NotaNumber”。
出现这个数值比较少见,以至于我们可以不理它。
当运算无法返回正确的数值时,就会返回“NaN”值。
NaN值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至NaN本身也不等于NaN。
true布尔值“真”。
用通俗的说法,“对”。
false布尔值“假”。
用通俗的说法,“错”。
在Math对象中还有一系列数学常数。
这将在讨论“对象化编程”时谈到。
表达式与运算符表达式与数学中的定义相似,表达式是指具有一定的值的、用运算符把常数和变量连接起来的代数式。
一个表达式可以只包含一个常数或一个变量。
运算符可以是四则运算符、关系运算符、位运算符、逻辑运算符、复合运算符。
下表将这些运算符从高优先级到低优先级排列:
括号(x)x中括号只用于指明数组的下标求反、自加、自减-x返回x的相反数!
x返回与x(布尔值)相反的布尔值x+x值加1,但仍返回原来的x值x-x值减1,但仍返回原来的x值+xx值加1,返回后来的x值-xx值减1,返回后来的x值乘、除x*y返回x乘以y的值x/y返回x除以y的值x%y返回x与y的模(x除以y的余数)加、减x+y返回x加y的值x-y返回x减y的值关系运算xyx=yxy当符合条件时返回true值,否则返回false值等于、不等于x=y当x等于y时返回true值,否则返回false值x!
=y当x不等于y时返回true值,否则返回false值位与x&y当两个数位同时为1时,返回的数据的当前数位为1,其他情况都为0位异或xy两个数位中有且只有一个为0时,返回0,否则返回1位或x|y两个数位中只要有一个为1,则返回1;当两个数位都为零时才返回零位运算符通常会被当作逻辑运算符来使用。
它的实际运算情况是:
把两个操作数(即x和y)化成二进制数,对每个数位执行以上所列工作,然后返回得到的新二进制数。
由于“真”值在电脑内部(通常)是全部数位都是1的二进制数,而“假”值则是全部是0的二进制数,所以位运算符也可以充当逻辑运算符。
逻辑与x&y当x和y同时为true时返回true,否则返回false逻辑或x|y当x和y任意一个为true时返回true,当两者同时为false时返回false逻辑与/或有时候被称为“快速与/或”。
这是因为当第一操作数(x)已经可以决定结果,它们将不去理会y的值。
例如,false&y,因为x=false,不管y的值是什么,结果始终是false,于是本表达式立即返回false,而不论y是多少,甚至y可以导致出错,程序也可以照样运行下去。
条件c?
x:
y当条件c为true时返回x的值(执行x语句),否则返回y的值(执行y语句)x=y把y的值赋给x,返回所赋的值赋值、复合运算x+=yx-=yx*=yx/=yx%=yx与y相加/减/乘/除/求余,所得结果赋给x,并返回x赋值后注意所有与四则运算有关的运算符都不能作用在字符串型变量上。
字符串可以使用+、+=作为连接两个字符串之用。
提示请密切注意运算的优先级。
编程时如果不记得运算符的优先级,可以使用括号()。
例如:
(a=0)|(b=0)。
一些用来赋值的表达式,由于有返回的值,可以加以利用。
例如,用以下语句:
a=b=c=10,可以一次对三个变量赋值。
语句下面将开始讨论JavaScript基本编程命令,或者叫“语句”。
注释像其他所有语言一样,JavaScript的注释在运行时也是被忽略的。
注释只给程序员提供消息。
JavaScript注释有两种:
单行注释和多行注释。
单行注释用双反斜杠“/”表示。
当一行代码有“/”,那么,“/”后面的部分将被忽略。
而多行注释是用“/*”和“*/”括起来的一行到多行文字。
程序执行到“/*”处,将忽略以后的所有文字,直到出现“*/”为止。
提示如果你的程序需要草稿,或者需要让别人阅读,注释能帮上大忙。
养成写注释的习惯,能节省你和其他程序员的宝贵时间,使他们不用花费多余的时间琢磨你的程序。
在程序调试的时候,有时需要把一段代码换成另一段,或者暂时不要一段代码。
这时最忌用Delete键,如果想要回那段代码怎么办?
最好还是用注释,把暂时不要的代码“隐”去,到确定方法以后再删除也不迟。
if语句if()else;本语句有点象条件表达式“?
:
”:
当为真时执行,否则,如果else部分存在的话,就执行。
与“?
:
”不同的是,if只是一条语句,不会返回数值。
是布尔值,必须用小括号括起来;和都只能是一个语句,欲使用多条语句,请用语句块。
注意请看下例:
if(a=1)if(b=0)alert(a+b);elsealert(a-b);本代码企图用缩进的方法说明else是对应if(a=1)的,但是实际上,由于else与if(b=0)最相近,本代码不能按作者的想法运行。
正确的代码是if(a=1)if(b=0)alert(a+b);elsealert(a-b);提示一行代码太长,或者涉及到比较复杂的嵌套,可以考虑用多行文本,如上例,if(a=1)后面没有立即写上语句,而是换一行再继续写。
浏览器不会混淆的,当它们读完一行,发现是一句未完成语句,它们会继续往下读。
使用缩进也是很好的习惯,当一些语句与上面的一两句语句有从属关系时,使用缩进能使程序更易读,方便程序员进行编写或修改工作。
循环体for(=;);本语句的作用是重复执行,直到为false为止。
它是这样运作的:
首先给赋,然后*判断(应该是一个关于的条件表达式)是否成立,如果成立就执行,然后按对作累加,回到“*”处重复,如果不成立就退出循环。
这叫做“for循环”。
下面看看例子。
for(i=1;i10;i+)document.write(i);本语句先给i赋初始值1,然后执行document.write(i)语句(作用是在文档中写i的值,请参越“对象化编程”一章);重复时i+,也就是把i加1;循环直到i=10时结束。
结果是在文档中输出了“123456789”。
和if语句一样,只能是一行语句,如果想用多条语句,你需要用语句块。
与其他语言不同,JavaScript的for循环没有规定循环变量每次循环一定要加一或减一,可以是任意的赋值表达式,如i+=3、i*=2、i-=j等都成立。
提示适当的使用for循环,能使HTML文档中大量的有规律重复的部分简化,也就是用for循环重复写一些HTML代码,达到提高网页下载速度的目的。
不过请在Netscape中重复进行严格测试,保证通过了才好把网页传上去。
作者曾试过多次因为用for循环向文档重复写HTML代码而导致Netscape“猝死”。
IE中绝对没有这种事情发生,如果你的网也是只给IE看的,用多多的for也没问题。
除了for循环,JavaScript还提供while循环。
while();比for循环简单,while循环的作用是当满足时执行。
while循环的累加性质没有for循环强。
也只能是一条语句,但是一般情况下都使用语句块,因为除了要重复执行某些语句之外,还需要一些能变动所涉及的变量的值的语句,否则一但踏入此循环,就会因为条件总是满足而一直困在循环里面,不能出来。
这种情况,我们习惯称之为“死循环”。
死循环会弄停当时正在运行的代码、正在下载的文档,和占用很大的内存,很可能造成死机,应该尽最大的努力避免。
break和continue有时候在循环体内,需要立即跳出循环或跳过循环体内其余代码而进行下一次循环。
break和continue帮了我们大忙。
break;本语句放在循环体内,作用是立即跳出循环。
continue;本语句放在循环体内,作用是中止本次循环,并执行下一次循环。
如果循环的条件已经不符合,就跳出循环。
例for(i=1;i=0&score60)result=fail;elseif(score80)result=pass;elseif(score90)result=good;elseif(score=100)result=excellent;elseresult=error;看起来没有问题,但使用太多的if语句的话,程序看起来有点乱。
switch语句就是解决这种问题的最好方法。
switch(e)caser1:
(注意:
冒号).break;caser2:
.break;.default:
.这一大段的作用是:
计算e的值(e为表达式),然后跟下边“case”后的r1、r2比较,当找到一个相等于e的值时,就执行该“case”后的语句,直到遇到break语句或switch段落结束(“”)。
如果没有一个值与e匹配,那么就执行“default:
”后边的语句,如果没有default块,switch语句结束。
上边的if段用switch改写就是:
switch(parseInt(score/10)case0:
case1:
case2:
case3:
case4:
case5:
result=fail;break;case6:
case7:
result=pass;break;case8:
result=good;break;case9:
result=excellent;break;default:
if(score=100)result=excellent;elseresult=error;其中parseInt()方法是以后会介绍的,作用是取整。
最后default段用的if语句,是为了不把100分当错误论(parseInt(100/10)=10)。
JavaScipt基本教程之对象的基本知识JavaScript是使用“对象化编程”的,或者叫“面向对象编程”的。
所谓“对象化编程”,意思是把JavaScript能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编程都以对象为出发点,基于对象。
小到一个变量,大到网页文档、窗口甚至屏幕,都是对象。
这一章将“面向对象”讲述JavaScript的运行情况。
对象的基本知识对象是可以从JavaScript“势力范围”中划分出来的一小块,可以是一段文字、一幅图片、一个表单(Form)等等。
每个对象有它自己的属性、方法和事件。
对象的属性是反映该对象某些特定的性质的,例如:
字符串的长度、图像的长宽、文字框(Textbox)里的文字等等;对象的方法能对该对象做一些事情,例如,表单的“提交”(Submit),窗口的“滚动”(Scrolling)等等;而对象的事件就能响应发生在对象上的事情,例如提交表单产生表单的“提交事件”,点击连接产生的“点击事件”。
不是所有的对象都有以上三个性质,有些没有事件,有些只有属性。
引用对象的任一“性质”用“.”这种方法。
基本对象现在我们要复习以上学过的内容了把一些数据类型用对象的角度重新学习一下。
Number“数字”对象。
这个对象用得很少,作者就一次也没有见过。
不过属于“Number”的对象,也就是“变量”就多了。
属性MAX_VALUE用法:
Number.MAX_VALUE;返回“最大值”。
MIN_VALUE用法:
Number.MIN_VALUE;返回“最小值”。
NaN用法:
Number.NaN或NaN;返回“NaN”。
“NaN”(不是数值)在很早就介绍过了。
NEGATIVE_INFINITY用法:
Number.NEGATIVE_INFINITY;返回:
负无穷大,比“最小值”还小的值。
POSITIVE_INFINITY用法:
Number.POSITIVE_INFINITY;返回:
正无穷大,比“最大值”还大的值。
方法toString()用法:
.toString();返回:
字符串形式的数值。
如:
若a=123;则a.toString()=123。
String字符串对象。
声明一个字符串对象最简单、快捷、有效、常用的方法就是直接赋值。
属性length用法:
.length;返回该字符串的长度。
方法charAt()用法:
.charAt();返回该字符串位于第位的单个字符。
注意:
字符串中的一个字符是第0位的,第二个才是第1位的,最后一个字符是第length-1位的。
charCodeAt()用法:
.charCodeAt();返回该字符串位于第位的单个字符的ASCII码。
fromCharCode()用法:
String.fromCharCode(a,b,c.);返回一个字符串,该字符串每个字符的ASCII码由a,b,c.等来确定。
indexOf()用法:
.indexOf(,);该方法从中查找(如果给出就忽略之前的位置),如果找到了,就返回它的位置,没有找到就返回“-1”。
所有的“位置”都是从零开始的。
lastIndexOf()用法:
.lastIndexOf(,);跟indexOf()相似,不过是从后边开始找。
split()用法:
.split();返回一个数组,该数组是从