1、JavaScript教程 第一讲 JavaScript 语言概况作者:未知 阅读人次:12945 文章来源: 发布时间:2004-11-16 Internet时代,造就了我们新的工作和生活方式,其互联性、开放性和共享信息的模式,打破了传统信息传播方式的重重壁垒,为我们带来了新的机遇。随着计算机和信息时代的到来,人类社会前进的脚步在逐渐加快,每一天都有新的事情发生,每一天都在创造着奇迹。随着 Internet技术的突飞猛进,各行各业都在加入 Internet的行业中来。无论从管理方面,还是从商业角度来看,Internet 都可以带来无限生机。通过 Internet,可以实现地区、集体乃至个人的连
2、接,从而达到一种“统一的和谐”。那么怎样把自己的或公司的信息资源加入到 WWW 服务器,是广大用户日益关心的问题。采用超链技术(超文本和超媒体技术)是实现这个目标最简单的、最快速的手段和途径。具体实现这种手段的支持环境,那就是 HTML超文本标识语言。通过它们可制作所需的 Web网页。 通过超文本(Hyper Text)和超媒体(Hyper Media)技术结合超链接(Hyper link)的链接功能将各种信息组织成网络结构(web),构成网络文档(Document),实现 Internet上的“漫游”。通过 HTML符号的描述就可以实现文字、表格、声音、图像、动画等多媒体信息的检索。然而采用
3、这种超链技术存在有一定的缺陷,那就是它只能提供一种静态的信息资源,缺少动态的客户端与服务器端的交互。虽然可通过 CGI (Common Gateway Interface)通用网关接口实现一定的交互,但由于该方法编程较为复杂,因而在一段时间防碍了 Internet技术的发展。而 javascript的出现,无凝为Internet网上用户带来了一线生机。可以这样说,javascript 的出现是时代的需求,是当今的信息时代造就了 javascript。javascript 的出现,它可以使得信息和用户之间不仅只是一种显示和浏览的关系,而是实现了一种实时的、动态的、可交式的表达能力。从而基于 CG
4、I静态的 HTML页面将被可提供动态实时信息,并对客户操作进行反应的 Web页面的取代。javascript 脚本正是满足这种需求而产生的语言。它深受广泛用户的喜爱的欢迎。它是众多脚本语言中较为优秀的一种,它与 WWW的结合有效地实现了网络计算和网络计算机的蓝图。无凝 Java家族将占领 Internet网络的主导地位。因此,尽快掌握 javascript脚本语言编程方法是我国广大用户日益关心的。一、什么是 javascriptjavascript 是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与 HTML超文本标记语言、Java
5、脚本语言(Java 小程序)一起实现在一个 Web页面中链接多个对象,与 Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的 HTML语言中实现的。它的出现弥补了 HTML语言的缺陷,它是 Java与 HTML折衷的选择,具有以下几个基本特点: 1. 是一种脚本编写语言javascript是一种脚本语言,它采用小程序段的方式实现编程。像其它脚本语言一样,javascript同样已是一种解释性语言,它提供了一个易的开发过程。 它的基本结构形式与 C、C+、VB、Delphi十分类似。但它不像这些语言一样,需要先编译,而是在程序运行过程中被逐行地解释。它与 HTML标识
6、结合在一起,从而方便用户的使用操作。 2. 基于对象的语言。javascript是一种基于对象的语言,同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。 3. 简单性javascript的简单性主要体现在:首先它是一种基于 Java基本语句和控制流之上的简单而紧凑的设计, 从而对于学习Java 是一种非常好的过渡。其次它的变量类型是采用弱类型,并未使用严格的数据类型。 4. 安全性javascript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实
7、现信息浏览或动态交互。从而有效地防止数据的丢失。 5. 动态性的javascript是动态的,它可以直接对用户或客户输入做出响应,无须经过 Web服务程序。它对用户的反映响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页(Home Page)中执行了某种操作所产生的动作,就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后,可能会引起相应的事件响应。 6. 跨平台性javascript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持 javascript的浏览器就可正确执行。从而实现了“编写一次,走遍天下”的梦想。 实际上
8、 javascript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需一个字处理软件及一浏览器,无须 WEB服务器通道,通过自己的电脑即可完成所有的事情。综合所述 javascript 是一种新的描述语言,它可以被箝入到 HTML 的文件之中。 javascript语言可以做到回应使用者的需求事件 (如: form 的输入) ,而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给伺服端 (server)处理,再传回来的过程,而直接可以被客户端 (client) 的应用程式所处理。javascript 和 Java 很类似,但到底并不一样! Java
9、 是一种比 javascript 更复杂许多的程式语言,而 javascript 则是相当容易了解的语言。javascript 创作者可以不那麽注重程式技巧,所以许多 Java 的特性在 Java Script 中并不支援。 二、javascript 和 Java的区别虽然 javascript与 Java有紧密的联系,但却是两个公司开发的不同的两个产品。Java 是 SUN公司推出的新一代面向对象的程序设计语言,特别适合于 Internet应用程序开发;而 javascript是Netscape公司的产品,其目的是为了扩展 Netscape Navigator功能,而开发的一种可以嵌入 We
10、b页面中的基于对象和事件驱动的解释性语言, 它的前身是 Live Script;而 Java的前身是 Oak语言。下面对两种语言间的异同作如下比较: 1. 基于对象和面向对象Java是一种真正的面向对象的语言,即使是开发简单的程序,必须设计对象。 javascript是种脚本语言,它可以用来制作与网络无关的,与用户交互作用的复杂软件。它是一种基于对象(Object Based)和事件驱动(Event Driver)的编程语言。因而它本身提供了非常丰富的内部对象供设计人员使用。 2. 解释和编译两种语言在其浏览器中所执行的方式不一样。Java 的源代码在传递到客户端执行之前,必须经过编译,因而客
11、户端上必须具有相应平台上的仿真器或解释器,它可以通过编译器或解释器实现独立于某个特定的平台编译代码的束缚。javascript是一种解释性编程语言,其源代码在发往客户端执行之前不需经过编译,而是将文本格式的字符代码发送给客户编由浏览器解释执行。 3. 强变量和弱变量两种语言所采取的变量是不一样的。Java采用强类型变量检查,即所有变量在编译之前必须作声明。如: Integer x; String y;x=1234;x=4321;其中 X=1234说明是一个整数,Y=4321 说明是一个字符串。javascript中变量声明,采用其弱类型。即变量在使用前不需作声明,而是解释器在运行时检查其数据类
12、型,如:x=1234;y“4321“;前者说明 x为其数值型变量,而后者说明 y为字符型变量。4. 代码格式不一样Java是一种与 HTML无关的格式,必须通过像 HTML中引用外媒体那么进行装载,其代码以字节代码的形式保存在独立的文档中。javascript的代码是一种文本字符格式,可以直接嵌入HTML 文档中,并且可动态装载。编写 HTML文档就像编辑文本文件一样方便。 5. 嵌入方式不一样。在 HTML文档中,两种编程语言的标识不同,javascript 使用 . 来标识,而 Java使用 . 来标识。 6. 静态联编和动态联编Java采用静态联编,即 Java的对象引用必须在编译时的进
13、行,以使编译器能够实现强类型检查。javascript采用动态联编,即 javascript的对象引用在运行时进行检查,如不经编译则就无法实现对象引用的检查。7. 三、javascript 程序运行环境 8. 1.Java运行环境 9. 软件环境:10. Windows 95/98 或 Windows NT。11. Netscape Navigator x.0 或 Internet Explorer x.0。12. 用于编辑 HTML文档的字符编辑器(WS、WPS、Notepad、WordPad 等)或 HTML文档编辑器。 13. 硬件配置:14. 首先必须具备运行 Windows 95/9
14、8或 Windows NT的基本硬件配置环境。推荐:15. 基本内存 32M。16. CRT 只少需要 256颜色,分辨率在 640X480以上。17. CPU 只少 233以上。18. 鼠标和其它外部设置(根据需要选用)。19. 20. 四、编写第一个 javascript程序 21. 下面我们通过一个例子,编写第一个 javascript程序。通过它可说明javascript 的脚本是怎样被嵌入到 HTML文档中的。22. test1.html文档:23. 在 Internet Explore5.0中运行行后的结果见图所示。24. 25. 图 程序运行的结果26. 说明:27. test.
15、html 是 HTML文档,其标识格式为标准的 HTML格式;28. 如同 HTML标识语言一样, javascript 程序代码是一些可用字处理软件浏览的文本,它在描述页面的 HTML相关区域出现。29. javascript 代码由 说明。在标识 之间就可加入javascript 脚本。30. alert()是 javascript的窗口对象方法,其功能是弹出一个具有 OK对话框并显示()中的字符串。31. 通过标识说明:若不认识 javascript代码的浏览器,则所有在其中的标识均被忽略;若认识,则执行其结果。使用注释这是一个好的编程习惯,它使其他人可以读懂你的语言。32. javas
16、cript 以 标签结束。33. 从上面的实例分析中我们可以看出,编写一个 javascript程序确实非常容易的。34. JavaScript教程 第二讲 JavaScript 基本数据结构35. 作者:未知 阅读人次:13481 文章来源: 发布时间:2004-11-16 36. 37. javascript提供脚本语言的编程与 C+非常相似,它只是去掉了语言中有关指针等容易产生的错误,并提供了功能强大的类库。对于已经具备+或语言的人来说,学习 javascript脚本语言是一件非常轻松愉快的事。 38.一、javascript 代码的加入39. javascript 的脚本包括在 HTM
17、L中,它成为 HTML文档的一部分。与 HTML标识相结合,构成了一个功能强大的 Internet网上编程语言。可以直接将 javascript脚本加入文档:40.说明: 41. 通过标识 指明 javascript脚本源代码将放入其间。42. 通过属性 Language =“javascript“说明标识中是使用的何种语言,这里是 javascript语言, 表示在 javascript中使用的语言。 43. 下面是将 javascript脚本加入Web 文档中的例子:44.45. 在浏览器的窗口中调用 test2.html,则显示“这是网易在线教程”字串。见图 2所示。46. 47.图 2
18、 48.说明: 49. Document. write()是文档对象的输出函数,其功能是将括号中的字符或变量值输出到窗口;document. close()是将输出关闭。50. 可将 标识放入 head 或 .之间。将 javascript标识放置. 在头部之间,使之在主页和其余部分代码之前装载,从而可使代码的功能更强大;可以将 javascript标识放置在. 主体之间以实现某些部分动态地创建文档51.二、基本数据类型52. javascript 脚本语言同其它语言一样,有它自身的基本数据类型、表达式和算术运算符以及程序的基本框架结构。javascript 提供了四种基本的数据类型用来处理数
19、字和文字, 而变量提供存放信息的地方, 表达式则可以完成较复杂的信息处理。53.1、基本数据类型54. 在 javascript中四种基本的数据类型:数值(整数和实数)、字符串型(用“”号或括起来的字符或数值)、布尔型(使 True或False 表示)和空值。在 javascript的基本类型中的数据可以是常量,也可以变量。由于 javascript采用弱类型的形式,因而一个数据的变量或常量不必首先作声明,而是在使用或赋值时确定其数据的类型的。当然也可以先声明该数据的类型,它是通过在赋值时自动说明其数据类型的。55.2、常量 56. 整型常量57.javascript的常量通常又称字面常量,它
20、是不能改变的数据。其整型常量可以使用十六进制、八进制和十进制表示其值。58. 实型常量59.实型常量是由整数部分加小数部分表示,如 12.32、193.98 。可以使用科学或标准方法表示:5E7、4e5 等。60. 布尔值61.布尔常量只有两种状态:True 或 False。 它主要用来说明或代表一种状态或标志,以说明操作流程。它与是不一样的,可以用或表示其状态,而 javascript只能用 True或 False表示其状态。62. 字符型常量63.使用单引号()或双引号(“)括起来的一个或几个字符。如 “This is a book of javascript “、“3245“、“ewrt
21、234234“ 等。64. 空值65.javascript中有一个空值 null,表示什么也没有。如试图引用没有定义的变量,则返回一个 Null值。66. 特殊字符67.同语言一样,javascript 中同样以有些以反斜杠()开头的不可显示的特殊字符。通常称为控制字符。68.3、变量69. 变量的主要作用是存取数据、提供存放信息的容器。对于变量必须明确变量的命名、变量的类型、变量的声明及其变量的作用域。 70. 变量的命名71.javascript中的变量命名同其计算机语言非常相似,这里要注意以下两点:72.、必须是一个有效的变量,即变量以字母开头,中间可以出现数字如 test1、text2
22、 等。除下划线()作为连字符外,变量名称不能有空格、()、()、(,)或其它符号。73.、不能使用 javascript中的关键字作为变量。74.在 javascript中定义了多个类键字,这些关键是 javascript内部使用的,不能作为变量的名称。如 Var、int、double、true 不能作为变量的名称。75. 在对变量命名时,最好把变量的意义与其代表的意思对应起来,以免出现错误。 76. 变量的类型77.在 javascript中,变量可以用命令 Var作声明:78.var mytest;79.该例子定义了一个 mytest变量。但没有赋予它的值。80.Var mytest=”T
23、his is a book”81.该例子定义了一个 mytest变量, 同时赋予了它的值。82.在 javascript中,变量以可以不作声明,而在使用时再根据数据的类型来确其变量的类型。83.如:84.x=100 85.y=“125“ 86.xy= True 87.cost=19.5等。88.其中 x整数,y 为字符串,xy 为布尔型,cost 为实型。 89. 变量的声明及其作用域90.javascript变量可以在使用前先作声明,并可赋值。通过使用 var关键字对变量作声明。对变量作声明的最大好处就是能及时发现代码中的错误;因为 javascript是采用动态编译的,而动态编译是不易发现
24、代码中的错误,特别是变量命名的方面。对于变量还有一个重要性那就是变量的作用域。在 javascript中同样有全局变量和局部变量。全局变量是定义在所有函数体之外,其作用范围是整个函数;而局部变量是定义在函数体之内,只对其该函数是可见的,而对其它函数则是不可见的。91.三、表达式和运算符 92.、表达式93. 在定义完变量后,就可以对它们进行赋值、改变、计算等一系列操作,这一过程通常又叫称一个叫表达式来完成,可以说它是变量、常量、布尔及运算符的集合,因此表达式可以分为算术表述式、字串表达式、赋值表达式以及布尔表达式等。94.、运算符95. 运算符完成操作的一系列符号,在 javascript中有
25、算术运算符,如、-、*、/等;有比较运算符如!、等; 有逻辑布尔运算符如!(取反)、|、|; 有字串运算如 、 等。在 javascript主要有双目运算符和单目运算符。其双目运算符由下列组成:96.操作数 运算符 操作数97. 即由两个操作数和一个运算符组成。如 5040、“This“+“that“等。单目运算符,只需一个操作数,其运算符可在前或后。98.()算术运算符99. javascript 中的算术运算符有单目运算符和双目运算符。100. 双目运算符: 101. +(加) 、-(减)、 *(乘)、 /(除)、 %(取模) 、|(按位或)、.Return 表达式;说明:当调用函数时,所
26、用变量或字面量均可作为变元传递。函数由关键字Function 定义。函数名:定义自己函数的名字。参数表,是传递给函数使用或操作的值,其值可以是常量 ,变量或其它表达式。通过指定函数名(实参)来调用一个函数。必须使用 Return将值返回。函数名对大小写是敏感的。、函数中的形式参数:在函数的定义中,我们看到函数名后有参数表,这些参数变量可能是一个或几个。那么怎样才能确定参数变量的个数呢?在 javascript中可通过 arguments .Length来检查参数的个数。例:Function function_Name(exp1,exp2,exp3,exp4)Number =function _
27、Name . arguments .length;if (Number1)document.wrile(exp2);if (Number2)document.write(exp3);if(Number3)document.write(exp4); 三、事件驱动及事件处理 、基本概念javascript 是基于对象(object-based)的语言。这与 Java不同,Java 是面向对象的语言。而基于对象的基本特征,就是采用事件驱动(event-driven)。它是在用形界面的环境下,使得一切输入变化简单化。通常鼠标或热键的动作我们称之为事件(Event),而由鼠标或热键引发的一连串程序的动作
28、,称之为事件驱动(Event Driver)。而对事件进行处理程序或函数,我们称之为事件处理程序(Event Handler)。、事件处理程序在 javascript中对象事件的处理通常由函数(Function)担任。其基本格式与函数全部一样,可以将前面所介绍的所有函数作为事件处理程序。格式如下:Function 事件处理名(参数表)事件处理语句集;、事件驱动javascript 事件驱动中的事件是通过鼠标或热键的动作引发的。它主要有以下几个事件:()单击事件 onClick当用户单击鼠标按钮时,产生 onClick事件。同时 onClick指定的事件处理程序或代码将被调用执行。通常在下列基本
29、对象中产生: button(按钮对象) checkbox(复选框)或(检查列表框) radio (单选钮) reset buttons(重要按钮) submit buttons(提交按钮) 例:可通过下列按钮激活 change()文件:“ ” onClick=“change()“在 onClick等号后,可以使用自己编写的函数作为事件处理程序,也可以使用 javascript中内部的函数。还可以直接使用 javascript的代码等。例: 这是一个例子“);()onChange 改变事件当利用 text或 texturea元素输入字符值改变时发该事件,同时当在 select表格项中一个选项状态
30、改变后也会引发该事件。例: ()选中事件 onSelect当 Text或Textarea 对象中的文字被加亮后,引发该事件。()获得焦点事件onFocus当用户单击 Text或 textarea以及 select对象时,产生该事件。此时该对象成为前台对象。()失去焦点 onBlur当 text对象或 textarea对象以及 select对象不再拥有焦点、而退到后台时,引发该文件,他与 onFocas事件是一个对应的关系。()载入文件 onLoad当文档载入时,产生该事件。onLoad一个作用就是在首次载入一个文档时检测cookie的值,并用一个变量为其赋值,使它可以被源代码使用。()卸载文件
31、 onUnload当 Web页面退出时引发 onUnload事件,并可更新 Cookie的状态。四、范例范例 1:下例程序是一个自动装载和自动卸载的例子。即当装入 HTML文档时调用 loadform()函数,而退出该文档进入另一 HTML文档时则首先调用 unloadform()函数,确认后方可进入。 范例 2:这是一个获取浏览器版本号的程序。该程序首先显示一个波浪一提示信息。之后显示浏览器的版本号有关信息。 输出结果图 1所示。图 1本讲介绍了 javascript程序设计的有关内容。程序流、函数、事件是我们学习掌握 javascript编程的重点。javascript语言是基于对象的(O
32、bject-Based),而不是面向对象的(object-oriented)。之所以说它是一门基于对象的语言,主要是因为它没有提供象抽象、继承、重载等有关面向对象语言的许多功能。而是把其它语言所创建的复杂对象统一起来,从而形成一个非常强大的对象系统。 虽然 javascript语言是一门基于对象的,但它还是具有一些面向对象的基本特征。它可以根据需要创建自己的对象,从而进一步扩大 javascript的应用范围,增强编写功能强大的 Web文档。一、对象的基础知识、对象的基本结构javascript 中的对象是由属性(properties)和方法(methods)两个基本的元素的构成的。前者是对象
33、在实施其所需要行为的过程中,实现信息的装载单位,从而与变量相关联;后者是指对象能够按照设计者的意图而被执行,从而与特定的函数相联。、引用对象的途径一个对象要真正地被使用,可采用以下几种方式获得:o 引用 javascript内部对象; o 由浏览器环境中提供; o 创建新对象。 这就是说一个对象在被引用之前,这个对象必须存在,否则引用将毫无意义,而出现错误信息。从上面中我们可以看出 javascript引用对象可通过三种方式获取。要么创建新的对象,要么利用现存的对象。、有关对象操作语句javascript 不是一纯面向对象的语言,它设有提供面向对象语言的许多功能,因此 javascript设计
34、者之所以把它你“基于对象”而不是面向对象的语言,在 javascript中提供了几个用于操作对象的语句和关键字及运算符。1)、For.in 语句格式如下:For(对象属性名 in 已知对象名)说明:o 该语句的功能是用于对已知对象的所有属性进行操作的控制循环。它是将一个已知对象的所有属性反复置给一个变量;而不是使用计数器来实现的。 o 该语句的优点就是无需知道对象中属性的个数即可进行操作。 例:下列函数是显示数组中的内容:Function showData(object)for (var X=0; X来定义一个越文本链接项。Forms: 在程序中使用多窗体时,建立该数组。Elements:在一
35、个窗口中使用从个元素时,建立该数组。 Frames:建立框架时,使用该数组anchors用于窗体的访问(它是通过form name=“form1”所指定的),link用于被链接到的锚点的访问(它是通过a href=URL所指定的)。Forms反映窗体的属性,而 anchors反映 Web页面中的链接属性。有关锚数组的文档:定义第一个锚名HTML Code定义第二个锚名HTML Code 建立锚的链接建立锚的链接. 该文档段建立了两面全锚的链接,可通过 Anchors访问这些锚。document.Anchors0反映第一个锚,而 document.Anchors1反映第二个锚的有关信息。五、范例
36、范例 1:一个动态文字滚动的例子。with (top.window.location) baseURL = href.substring (0,href.lastIndexOf (“/“) + 1)total_toc_items = 0;current_overID = “;last_overID = “;browser = navigator.appName;version = parseInt(navigator.appVersion); client=null;loaded = 0;if (browser = “Netscape“ function toc_item (img_name,
37、icon_col,width,height) if (client =“ns3“) img_prefix = baseURL + img_name;this.icon_col = icon_col;this.toc_img_off = new Image (width,height);this.toc_img_off.src = img_prefix + “_off.gif“;this.toc_img_on = new Image (width,height);this.toc_img_on.src = img_prefix + “_on.gif“;function new_toc_item
38、(img_name,icon_row,width,height) toc_item img_name = new toc_item (img_name,icon_row,width,height);function toc_mouseover (itemID) if (client =“ns3“) current_overID = itemID;if (current_overID != last_overID) document current_overID.src = toc_item current_overID.toc_img_on.src;if (last_overID != “)
39、document.images last_overID.src = toc_itemlast_overID.toc_img_off.src;last_overID = current_overID;function toc_mouseout () if (client =“ns3“) if (current_overID != “) document.images current_overID.src = toc_item current_overID.toc_img_off.src;current_overID = “;last_overID = “;new_toc_item (“1“,2,120,20);