1、ASP动态网页制作教程,第5章 VBScript脚本语言,来源:http:/ sdeer圣迪奥,本章介绍VBScript脚本语言的语法及其应用,主要内容包括VBScript语言概述以及VBScript的常量、变量、运算符、函数、数组、流程控制语句、注释语句、过程等。通过本章的学习,读者可以全面地了解VBScript脚本语言的特点,应能扎实掌握其语法要求,深刻理解VBScript脚本语言包含的每个元素及其作用。,主要内容,5.1 VBScript语言概述,在ASP中,通过使用VBScript脚本语言编写程序代码,可以实现主要的功能模块。本节介绍VBScript脚本语言的概念以及VBScript代
2、码的编写格式。,5.1.1 了解VBScript语言VBScript是Microsoft Visual Basic Script Edition的简称,是一种脚本语言。可以将VBScript程序嵌入到HTML中,制作出动态交互的Web页面。VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的脚本编程语言。,VBScript脚本语言具有以下特点。 (1)语言简单、易学易用。 (2)如果用于客户端功能、可以降低Web服务器负荷。 (3)可用于ASP程序设计。 (4)多种嵌入形式。,5.1.2 VBScript代码编写格式VBScript是Microsoft公司开发的VB
3、语言的一个子集,它是专门为IE开发的编程语言,是一个简单易学的脚本语言,使用VBScript脚本的目的是控制页面内容的动态交互性。,1服务器端脚本编写格式服务器端脚本在Web服务器上执行,由服务器根据脚本的执行结果生成相应的HTML页面发送到客户端浏览器中并显示。,只有服务器端脚本才能真正地实现“动态网页”的功能。服务器端脚本的执行不受浏览器的限制,脚本在网页通过网络传送给浏览器之前被执行,Web浏览器收到的只是标准的HTML文件。,在ASP程序中,编写服务器端脚本有两种方法。 (1)方法一将脚本代码放置在标识符之中,格式如下:,【例5-1】在中编写VBScript,图5-1 在中编写VBSc
4、ript,(2)方法二将脚本代码放置在标记之间,格式如下。,VBScript代码,【例5-2】在中编写VBScript。,图5-2 在中编写VBScript,2客户器端脚本编写格式客户端脚本由浏览器解释执行。由于客户端脚本随着HTML页面下载到客户端浏览器,在用户本地执行,因此其执行速度明显快于服务器端脚本。客户端脚本常用于做简单的客户端验证或实现网页特效等。,客户端脚本的代码是写在和标记之间的。可以将编写完成的代码块放置在HTML文档中的任何位置。但是通常情况下,是将代码块放在标记之间,以便查看和使用。,语法格式如下:,【例5-3】编写客户端脚本。,图5-3 编写客户端脚本,5.2 常量与变
5、量,常量与变量是VBScript语言的常见元素。本节介绍VBScript中的常量、变量的声明和赋值以及如何确定变量的作用域和存活期。,5.2.1 VBScript常量常量是具有一定含义的名称,用于代替数值或字符串,在程序执行期间其值不会发生变化。常量通常可分为普通常量和符号常量。普通常量通常可以称为文字常量,普通常量不必定义就可以在程序中使用,而符号常量则要用Const语句加以声明才能使用。,1文字常量(1)字符串常量 (2)数值常量 (3)日期时间常量,2符号常量符号常量是通过一个标识符表示的常量,用于代替数字或字符串,在程序执行期间其值不会发生变化。,(1)预定义符号常量 (2)用户自定义
6、常量,5.2.2 变量的声明和赋值VBScript中的变量是一种使用方便的占位符,主要用于引用计算机的内存地址来存储脚本运行时更改的数据信息。,在VBScript中的变量不区分大小写,在使用变量时,用户不需要知道变量在计算机的内存中是如何存储的,只要引用变量名来查看或更改变量的值就可以了。,1变量命名规则在VBScript中,变量命名必须遵循以下规则。,(1)变量名必须以字母开头; (2)变量名中不能含有句点(.); (3)名字的长度不能超过255个字符;,(4)不能与VBScript的关键字相同; (5)在被声明的作用域内必须唯一。,2声明变量VBScript中声明变量有两种方式:一种是显式
7、声明,另一种是隐式声明。,(1)显式声明显式声明是通过变量声明语句来声明变量,它可以在定义变量的时候为变量在内存中预留空间。声明语句包括Dim语句、Public语句和Private语句。一个声明语句可以声明多个变量,并且应用逗号将多个变量分开。, 通过Dim语句声明变量语法:Dim 变量名,变量名, 通过Public语句声明变量Public语句是用来全局变量的,这些变量可以在网页中的所有脚本和过程中使用。语法:Public 变量名 变量名 , 通过Private语句声明变量Private语句是用来声明私有变量的,声明的变量只能在声明它的脚本中或在声明的标记之间使爱用。语法:Private 变量
8、名, 变量名,(2)隐式声明因为在VBScript中只有一种数据类型,即变体类型,所以在VBScript中使用一个变量前是无需声明的,可以直接在脚本代码中使用。当在程序运行过程中检查到该变量时,系统会自动在内存中开辟存储区域并登记该变量名。,为了避免隐式声明时因写错变量名等引起的问题,在VBScript中提供了Option Explicit语句来强制显式声明变量。,3为变量赋值在VBScript中,可以通过赋值运算符“=”为指定的变量赋值。变量位于赋值运算符的左边,要赋的值位于赋值运算符的右边。所赋的值可以是任何数值、字符串、常数或表达式。具体的语法格式如下: 变理名=变量值,5.2.3 变量
9、的作用域和存活期变量的作用域是由声明它的位置决定的。如果在过程中声明变量,则只有该过程中的代码可以访问或更新变量值,此时变量具有局部作用域并被称为过程级变量。如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为脚本级变量,具有脚本级作用域。,【例5-4】区分变量的作用域。,图5-4 区分变量的作用域,变量存在的时间称为存活期。脚本级变量的存活期从被声明的一刻起,直到脚本运行结束。,过程级变量的存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。在不同过程中可以使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。,5.3 运算
10、符的应用,运算符是完成操作的一系列符号。在VBScript中,运算符包括算术运算符、连接运算符、关系运算符、逻辑运算符等几种类型。当表达式包含多个运算符时,将按预定顺序计算每一部分,该顺序称为运算优先级。,1算术运算符算术运算符,主要有以下几种。,(1)加法运算符+:用于计算两个数字的和。,(2)减法运算符:用于计算两个数字的差。,(3)乘法运算符*:用于计算两个数相乘。,(4)指数运算符:用于计算数的指数次方。,(5)除法运算符/:用于两个数值相除并返回以浮点数表示的结果。,(6)整数除法运算符:用于两个数相除并返回以整数形式表示的结果。,2连接运算符连接运算符是将两个字符表达式连接起来,生
11、成一个新的字符串。连接运算符有“+”和“&”。其中,“+”用于连接两个字符串,“&”可以用于连接两个不同类型的数据。,3关系运算符关系运算符用于对两个表达式的值进行比较(可以是数值的比较,也可以是字符串的比较)。关系运算符的语法格式如下:NumExp = NumExp1 Operator NumExp2,表5-1 关系运算符,4逻辑运算符逻辑运算符通常也称为布尔运算符,专门用于逻辑值之间的运算。用于完成逻辑运算的运算符有以下几种。,(1)取反运算符Not:对逻辑真取反的结果为逻辑假,而对逻辑假取反的结果为逻辑真。,(2)逻辑与运算符And:如果两个表达式的值都为真,结果才为真,否则结果为假。,
12、(3)逻辑或运算符Or:两个表达式中只要有一个为真,结果就为真,只有两个都为假,结果才为假。,(4)异或运算符Xor:如果两个表达式同时为真或同时为假,则结果为假;两个表达式中一个为真,另一个为假,则结果为真。,(5)等价运算符Eqv:是异或运算符取反的结果,即如果两个表达式同时为真或同时为假,则结果为真,否则结果为假。以上逻辑运算符的优先级顺序按从上到下的顺序逐渐降低。,5运算符的优先级当一个表达式包含有多个运算符时,系统是按照一定的计算顺序进行运算的。运算符的优先顺序如下: 算术运算符 连接运算符 关系运算符 逻辑运算符,对于同优先级的运算符,以从左到右的顺序进行运算。,5.4 函数的应用
13、,VBScript提供了许多重要的内部函数,通过使用这些函数,可以灵活、快速地开发出多功能的程序模块。本节将介绍字符串函数、转换函数、日期和时间函数、判断函数、数学函数以及其他函数的应用。,5.4.1 字符串处理字符串函数是编写程序时使用最多的函数。字符串函数用于对字符串数据进行处理,常用字符串函数如表5-2所示。,表5-2 常用的字符串函数,续表,续表,续表,【例5-5】取字符串的子串,5.4.2 数据转换转换函数用于将一种类型的数据转换成其他类型的数据。常用的转换函数如表5-3所示。,表5-3 常用的转换函数,续表,续表,续表,【例5-6】将字符串转换为整型,5.4.3 日期时间数据的处理
14、日期时间函数用于对日期、时间数据进行处理,常用的日期时间函数如表5-4所示。,表5-4 常用的日期时间函数,续表,续表,续表,【例5-7】得到计算的时间,图5-5 得到计算的时间,5.4.4 数据类型的判断判断函数用于判断一个数据的数据类型,常用的数据类型判断函数如表5-5所示。,表5-5 常用的数据类型判断函数,续表,例5-8判断函数的应用,5.4.5 数学函数的应用在设计一些系统时,应用数学函数可以在很大程度上简化编写代码的工作量。,表5-6 常用的数学函数,续表,【例5-9】生成随机数,图5-6 生成随机数,5.5 数组的创建与应用,数组是有序数据的集合。数组中的每一个元素都属于同一个数
15、据类型,用一个统一的数组名和下标可以唯一地确定数组中的元素,下标是放在紧跟在数组名之后的括号中的。有一个下标的数组称为一维数组,有两个下标的数组称为二维数组,以此类推。数组的最大维数为60。,5.5.1 创建数组在VBScript中,数组有两种类型:固定数组和动态数组。,1固定数组固定数组是指数组大小在程序运行时不可改变的数组。数组在使用前必须先声明,使用Dim语句可以声明数组。声明数组的语法格式如下:Dim array(i),2动态数组声明数组时也可以不指明它的下标,这样的数组叫做变长数组,也称为动态数组。动态数组的声明方法与固定数组声明的方法一样,唯一不同的是没有指明下标,如:Dim ar
16、ray(),虽然动态数组声明时无需指明下标,但在使用它之前必须使用ReDim语句确定数组的维数。对动态数组重新声明的语法格式如下:Dim array()Redim array(i),【例5-10】使用动态数组,图5-7 使用动态数组,5.5.2 应用数组函数数组函数用于对数组的操作。数组函数主要包括LBound函数、UBound函数、Split函数和Erase函数,下面分别进行介绍。,1LBound函数LBound函数用于返回指定数组维的最小可用下标。其语法格式如下:LBound(数组名称,维数)维数是指要返回指定维下界的整数。,2UBound函数UBound函数用于返回指定数组维的最大可用下
17、标。其语法格式如下:UBound(数组名称,维数)维数是指要返回指定维上界的整数。,3Split函数Split函数用于返回基于零的一维数组,其中包含指定数目的子字符串。其语法格式如下:Split(expression,分隔符,count,比较类型),4Erase函数Erase函数重新初始化固定大小数组的元素,并释放数组的存储空间。其语法格式如下:Erase array其中,array表示数组名称。,5.6 流程控制语句,在VBScript语言中,有3种基本程序控制结构:顺序结构、选择结构和循环结构。顺序结构是程序设计中最基本的结构,在程序运行时,编译器总是按照先后顺次执行程序中的所有命令。通过
18、选择结构和循环结构可以改变代码的执行顺序。本节介绍VBScript选择语句和循环语句。,5.6.1 运用VBScript选择语句If语句的四种形式 1 If 条件语句 then 命令2 If 条件语句 then命令序列End if,基本格式如下: 3 if 条件语句 then命令序列1else 命令序列2end if,If then else语句,If then elseif else语句,基本格式如下: 4 if 条件语句 then命令序列1elseif 命令序列2else命令序列2end if,3使用select case语句实现多分支选择结构select case语句称为多分支选择语句,
19、该语句可以根据条件表达式的值,决定执行的命令序列。应用select case语句实现的功能,相当于嵌套使用if语句实现的功能。,语法:select case 变量或表达式case 结果1命令序列1case 结果2 命令序列2,case 结果n命令序列ncase else命令序列n+1end select,图5-9 使用select case语句,5.6.2 运用VBScript循环语句1doloop循环控制语句doloop语句当条件为true时或条件变为true之前重复执行某语句块。根据循环条件出现的位置,doloop语句的语法格式分为以下两种形式。,(1)循环条件出现在语句的开始部分do w
20、hile 条件表达式循环体Loop或者do until 条件表达式循环体Loop,(2)循环条件出现在语句的结尾部分do循环体loop while 条件表达式或者do 循环体loop until 条件表达式,【例5-13】应用doloop语句计算多个数值的和,2Whilewend循环控制语句whilewend语句是当指定的条件为true时执行一系列的语句。该语句与doloop循环语句功能相似。,whilewend语句的语法格式如下:while conditionstatementsWend,【例5-14】应用whilewend语句输出多个数值,图5-11 应用whilewend语句,3forn
21、ext循环控制语句fornext语句是一种强制型的循环语句,它按指定次数重复执行一组语句。,其语法格式如下: for counterstart to end step numberstatementexit for Next 注意: 除非step取默认值1,否则不能省略step number部分,其语法格式如下:for each 元素 in 集合或数组循环体exit forNext,【例5-16】应用for eachnext语句展示数组中的元素,图5-13 应用for eachnext语句,5.8 过程的创建与调用,过程是一组能执行指定任务的脚本命令。在VBScript中,过程被分为两类,分别
22、为Sub过程和Function函数。两者的根本区别在于Sub过程没有返回值,而Function函数有返回值。,5.8.1 调用Sub过程Sub过程是指包含在Sub和End Sub语句之间的一组VBScript语句,该过程执行操作但没有返回值。Sub过程可以使用参数(参数可以为调用过程传递的常量、变量或表达式),如果Sub过程无任何参数,则必须包含空括号()。,声明一个过程的语法格式如下:Sub 子程序名(参数1,参数2,)End Sub在ASP页面中,调用Sub过程有以下两种方式。,(1)使用Call语句调用Sub过程Call 子程序名(参数1,参数2,) 使用Call语句可以将控制权传递给S
23、ub过程,(2)直接调用Sub过程子程序名 参数1,参数2,直接调用Sub过程时,只需指定过程名及所有参数值,参数值之间使用逗号分隔。如果使用了Call语句,则必须将所有参数包含在括号之中。,【例5-17】自定义Sub过程判断闰年,图5-14 调用Sub过程,5.8.2 调用Function过程Function过程是包含在Function和End Function语句之间的一组VBScript语句。Function过程与Sub过程类似,Function过程是拥有返回值的过程。,Function过程可以使用参数(参数可以为调用过程传递的常数、变量或表达式)。如果Function过程无任何参数,则
24、Function语句必须包含空括号()。Function过程通过过程名返回一个值,这个值是在过程的语句中赋值给过程名的。,Function返回值的数据类型总是Variant。Function过程的语法格式如下:Public | Private Function name (arglist)statements,name = expressionExit Functionstatementsname = expressionEnd Function,表5-8 Function过程参数说明,【例5-18】定义Function过程限制标题显示的长度内容,图5-15 调用Function过程,作 业,P103 5-1 5-3 P136 6-1 把表单页面程序和获取表单页面的程序都写出来 6-2下周上课前交,