1、第五章 VBScript脚本语言,5.1 VBScript脚本语言基础,精通一门语言,重要的是要掌握语言的特点、语法以及所包含的关键技术。 Asp中使用VBScript脚本语言编写代码,实现功能模块。脚本语言优点是编写简单,可使用任何文本编辑器编写。 了解VBScript语言:全称是Microsoft Visual Basic Scripting Edition,是VB的子集。可嵌入到HTML中,制作动态交互的web页。 服务器端脚本和客户端脚本 1、服务器端脚本:有两种方法,方法一是将脚本代码放置到”标识符之中,格式如下:,举例(05sl01);方法二是将脚本代码放置在,和 标记之间。 格式
2、如下:VBScript代码举例(05sl02) 一般情况使用第一种方法编写服务器端脚本程序,方法二在global.asa比较常见。 2、客户端脚本:动态网页设计中,必须把客户端脚本的代码写在和 之间,并将其嵌入到HTML页面中。,总结两者的主要区别: 1、服务器端脚本在web服务器上执行,有server根据脚本的执行结果生成相应的html页面并发送到客户端浏览器显示。Server端脚本的执行不受浏览器限制,web浏览器收到的是标准html文件。只有server端脚本才真正实现“动态网页”的功能。 2、客户端脚本由浏览器解释执行。客户端脚本随html页面下载到客户端浏览器,在用户本地执行,因此执
3、行速度快于server端脚本。常常用来做简单的客户端验证(比如用户名非空验证),或实现网页特效等等。,VBScript语言特点:VB的子集,专门为浏览器开发的编程语言,简单的脚本语言。目的是控制页面内容的动态交互性。 特点: 1、语言简单、易学易用。 2、增强客户端功能,降低服务器负荷。 3、可用于asp程序设计。 4、多种嵌入形式。 在 HTML中使用VBScript:两者结合在一起使用,并且VBScript可以放在html的任意位置。但通常放在head中,以便集中放置、查看使用。,语法格式Language:指定脚本代码使用的脚本语言。 Event:用于指定与脚本代码相关联的事件。 For:
4、用于指定与脚本代码相关联的对象。 注意:中间的注释标记防止某些浏览器不能识别Script;script标记可在head或body部分出现任意次,举例(05sl03) 1、asp页面中建立表单,功能是提交用户输入的用户名和密码信息。 2、自定义一个Function过程。功能是判断用户名和密码是否空,如果空,提示出错;如果非空,提示登录成功,并提交表单信息。 3、onclick事件调用myuser过程 Asp是一套服务器端的对象模型,而非一种编程语言。因此通过内置对象提供的方法和属性,很容易操作server端的数据库。但在编写程序前要声明server端的脚本语言。默认VBScript 格式: 注:
5、language必须放在文档的第一行。,5.2 VBScript的常量,常量:有一定含义的名称,程序执行期间其值不变。通常分为普通常量和符号常量。普通常量通常称为文字常量,不必定义就可以使用;符号常量则要用const语句声明才能用。 定义文字常量:按数据类型分为字符串常量、数值常量和日期时间常量。1、字符串常量:由一对双引号括起来的字符序列所组成。其中字符包含字母、数字、汉字以及标点符号等。例如:“VBScript脚本语言” 或“iis 6.0”,2、数值常量:可分为整型常量、长整型常量和浮点型常量。 例如:&H99 或&O81 3、日期时间常量:用一对“#”号括起来。 例如:#2010-11
6、-1#或#2010-11-1 18:30:00# 定义符号常量:通过一个标识符表示的常量,代替数字或字符串。VbScript中用关键const语句定义。分为预定义符号常量和用户自定义常量。 1、预定义:使用前不必定义的常量。 例如:vbCr表示回车 2、自定义:用const语句创建 例如:Const Company=“微软中国”Const pi=3.14159365358979323846,5.3 VBScript的变量,VBScript中的变量是一种使用方便的占位符,主要引用计算机内存地址来存储脚本运行时的数据信息。不区分大小写。 变量的命名规则变量名必须以字母开头变量名不能含有句点(.)名
7、字长度不超过255个字符不能与VBScript关键字相同在被声明的作用域中必须唯一命名时候应使用含义清楚的变量名,简单变量的声明 1、显式声明它通过变量声明语句来声明变量。声明语句包括:Dim语句、Public语句和Private语句。一个声明语句可以声明多个变量并用逗号将其分开。 Dim语句:通常用它显式声明变量并分配存储空间 语法:Dim 变量名,变量名 例子:Dim sql,conn,Array(5) Public语句:声明全局变量,变量可在网页中所有脚本和所有过程中使用 语法:Public 变量名,变量名 例子:Public Num,standard,Private语句:声明私有变量,
8、只在声明它的脚本中使用。 语法:Private 变量名,变量名 例子:Private Num, standard 2、隐式声明 VBScript中只有一种数据类型,即变体类型。无需声明,直接使用。 VBScript中提供Option Explicit语句强制显式声明变量。如果有此语句,先声明后使用,否则出错。此语句位于asp处理命令只后、任何html文本或者脚本命令之前。,例如:注:此语句仅在用VBScript编写的脚本代码 变量的赋值:赋值运算符“=”为指定变量赋值。 语法:变量名=变量 例如:Company=“微软中国”BookName=“asp编程” 变量的作用域和存活期,作用域:由声明
9、它的位置决定。在过程中声明变量,只在该过程中可以访问或更新,此时变量具有局部作用域并称为过程级变量;如果再过程之外声明变量,则该变量可以被脚本中所有过程识别,称为脚本级变量,具有脚本级作用域。 举例(05sl04) 变量存活期:变量存在的时间脚本级变量的存活期从被声明一刻起,直到脚本运行结束。过程级变量的存活期仅是该过程运行的时间,结束后变量消失。不同过程中可以使用同名的局部变量。,通过变量的名称就能知道该变量的子类型,VBScript的数据类型,VBScript 只有一种数据类型,称为Variant,也叫做变体类型。Variant类型可以在不同的场合代表不同的数据类型。例如Variant类型
10、用于数字时,将作为数值处理;用于字符串时,将作为字符串处理。声明Variant变量使用 Dim 语句,例如: Dim V1声明多个变量时,使用逗号分隔变量。例如: Dim Top, Bottom, Left, Right,显示 Variant 包含的数据子类型,5.4 VBScript的数组,数组:有序数据的集合。数组中每一个元素都属于同一个数据类型。数组名跟下标可惟一表示数组中的元素。 有时候需要创建包含一系列值的变量,称为数组变量。数组变量和一般变量是以相同的方式声明的,用Dim语句声明。唯一区别是声明数组变量时变量名后面带有括号()。语法格式:Dim Array(i) 数组的长度为i+1
11、,项目数从0开始比如声明了一个包含11个元素的一维数组: Dim A(10) 声明动态数组 动态数组,也可以称为变长数组。声明数组时不指定数组的项目数;动态数组跟一般数组声明的方法一样,惟一不同的是没有指明项目数。 例如: Dim Array(),虽然动态数组声明时无需指明项目数,但在使用它之前需用redim语句确定数组的维数,其格式如下:Dim array()Redim array(i) 重新调整动态数组大小的次数是没有任何限制的,redim可以多次使用。但是应注意:使用redim语句重新声明数组后,原有数组的值将全部清空,如果希望保留原有值,使用Preserve关键字。例如: Dim My
12、Array() Redim MyArray(5) Redim Preserve MyArray(3)dim A()ReDim A(25)A(0) = 256A(1) = 324ReDim Preserve A(30)A(30) = 30,document.write(A(0)document.write(“)document.write(A(1)document.write(“)document.write(A(30)运行结果: 256 324 30 有关声明动态数组的例子(05sl05)1、asp页面中,使用dim声明动态数组,并用redim指明数组的长度2、为数组的各元素赋值3、使用for
13、to 循环语句读取指定数组中的数据,数组元素赋值 它的赋值与对变量赋值方法基本相同,不同的是由于数组中含有多个元素,赋值时候必须指明它的位置。 例如:使用索引为各个元素赋值 Dim Array(3) Array(0)=“” Array(1)=“” Array(2)=“” Array(3)=“” 将数组中的数据添加到下拉菜单中应用情况:通常是固定不变的数据存储在数组,然后将此数据显示到下拉菜单中供用户选择。程序运行速度快,方便用户浏览。(例子05sl06),5.5 VBScript运算符,比较运算符:用于对两个表达式的值进行比较,通常用于判断。 语法格式如下:NumExp= NumExp1 Op
14、erator NumExp2 关系运算符用来比较两个表达式的值的大小,如大于()、小于(=)、小于等于()和等于(=) 比较运算符的结果是逻辑型值True或者False,比较运算符可以用于数值间的比较,也可用于字符串间的比较。当用作字符串间比较的时候,将按照ASCII码值进行比较。,算术运算符:算术运算符就是日常的数学运算,如加(+)、减(-)、乘(*)、除(/)、整除()、取模(Mod)和指数()。 连接运算符:连接运算符是将两个字符表达式连接起来,生成一个新的字符串。连接运算符有“+”和“&”。 逻辑运算符:逻辑运算符通常称为布尔运算符,专门用于逻辑值之间的运算。逻辑运算符有逻辑非Not、
15、逻辑与and、逻辑或or、逻辑异或xor、逻辑等于eqv五种。 运算符的优先顺序:先括号内后括号外,优先级相同按照从左到右的顺序计算。当一个表达式包含有多个运算符的时候,执行运算的符号有一个固定的计算顺序,为:算术运算符 连接运算符 关系运算符 逻辑运算符。,5.6 VBScript脚本过程,过程是一组能执行指定任务的脚本命令。VBScript中分两类:Sub过程和Function过程。两者区别:前者没有返回值,后者有返回值。 调用sub过程Sub过程是指包含在sub和end sub语句之间的一组vbscript语句。可以使用参数,如果无则必须用空括号()。语法格式:,Sub 子程序名(参数1
16、,参数2,) End Sub 调用方式: 1、使用call语句调用。 Call sub程序名(参数1,参数2) 2、直接调用 sub程序名 参数1,参数2. 注意事项:直接调用sub过程时,只需指定过程名及所有参数值,参数值用逗号隔开。如果用call调用,所有参数应在括号中。 举例说明(05sl07),1、sub过程常用于重复或共享的任务u,降低复杂性,提高执行效率。先建立两个CSS文件,分别在文件中定义页面元素所需要的样式。 2、asp页面中,根据所传递的参数值,调用所对应的sub过程,并确定在标记中引用的CSS文件。 3、自选风格后显示出运行结果不同。 调用function过程: Func
17、tion过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。参数使用上跟sub类似。但它通过过程名返回一个值,并且返回值的数据类型总是variant。 语法格式: Public|PrivateFunction name(arglist)statementsname=expression,exit functionstatementsname=expression End Function Function 参数说明:,Function过程的调用方法跟sub过程的调用相同。分别是call调用和程序中使用过程名调用。当function没有返回值时,
18、可以使用call;如果有返回值,使用过程名调用。 例子(05sl08) 1、自定义带参数的function 2、读取数据,其中调用function 3、将读取到的信息作为function过程的参数,5.7 VBScript的函数,除了可以使用自己编写的函数以外,系统还提供了许多重要的函数,这些函数可以在程序中直接使用。在实际编写程序的时候,其他可以查阅VBScript语言参考。 字符串处理函数 主要用于对字符串数据进行处理,常用的字符串函数如下表所示:,字符串函数使用率较高,重点掌握。 例子(05sl09) 转换函数:主要用于完成对各种数据的转换操作,例子见(05sl10) 判断函数:用于判断
19、一个数据的数据类型,日期时间函数,日期时间函数用于对日期、时间数据进行处理。其例子见(05sl11) 数组函数应用 LBound函数:返回数组维数的最小可用下标。语法格式:LBound(数组名称,维数) UBound函数:最大可用下标。语法格式为:UBound(数组名称,维数) Split函数 Erase函数,5.8 VBScript流程控制语句,顺序结构、选择结构和循环结构 If语句实现单分支选择结构ifthenend if 格式:if 条件语句 then命令序列end if 注意:可执行多条语句作为判断结果,但所有语句必须在同一行上并且以冒号分开。 Ifthenelse实现双分支选择结构
20、根据条件语句的取值,执行相应的命令序列。 格式如下:if 条件语句 then命令序列1,else命令序列2end if 执行时,条件语句为true,执行序列1,否则2。 例子见(05sl12) 1、建立用户登录表单,嵌入用户名、密码和验证码文本框。 2、根据表单,首先验证验证码是否正确,然后判断用户名,如果正确再判读密码是否正确。如果都通过,则登录,如果有一项不正确,要求重新填写登录信息。 3、自定义的获取随机数的function过程 4、验证用户登录信息 5、验证验证码是否正确,6、验证用户名 7、验证密码 8、都正确的情况下,允许用户登录。 Select case实现多分支选择结构,相当于
21、嵌套使用if语句 格式: Select case 变量或表达式case 结果1命令序列1case 结果2命令序列2case 结果n命令序列ncase else命令序列n+1 End select,Select case 可以嵌套使用,但必须有匹配的end select语句。举例(05sl13) Doloop循环控制语句 根据循环条件的出现位置,分两种: 1、出现在语句的开始部分 Do while 条件表达式循环体 Loop 2、出现在结尾部分 Do循环体 Loop while 条件表达式 或者 Do循环体 Loop until 条件表达式,先后区别:当条件表达式在前时候,表示循环条件为真时才执
22、行循环体;当条件表达式在后时,表示无论条件是否满足都至少执行一次循环体。 Doloop中还可以使用强制退出循环命令exit do,位置任意,作用同for语句中的exit for。Doloopye 可以嵌套使用,但do必须有与之匹配的loop。 例子见(05sl14) Whilewend循环控制语句 它是当指定的条件为true时执行的一系列语句。功能与上面doloop相似。格式如下: While conditionstatements Wend 说明:此语句中,如果condition为true,则statements中所有wend语句之前的语句都被执行,然后将控制权返回给while语句,并重新检
23、查condition。如果condition仍为true,重复上述过程,为false的话,则按wend后的语句执行。例子(05sl15),Fornext循环控制for counter =start to end step numberstatementexit fornext 一种强制循环,可以嵌套使用。(05sl16) For eachnext 主要是用于对数组或集合中的每个元素重复执行一组语句。如果不知道有多少元素,则使用此语句是较好的选择。格式: For each 元素 in 集合或数组循环体exit for Next 例子见(05sl17),Exit退出循环语句 Exit主要用于退出d
24、oloop、fornext、function或者sub代码块。 语法格式如下: Exit do Exit for Exit function Exit sub 各参数说明(05sl18) 1、根据tb_type信息表,查询模块名称为“函数应用”的类别信息 2、fornext控制逐一输出类别名称。,5.9 有效使用注释语句,添加注释,增强可读性,注释语句不被执行,也不会显示在页面上,只是为了帮助自己和别人阅读源程序。有两种方式。 1、使用rem语句 Rem 注释语句 例子05sl19 2、使用单引号“” 注释语句 例子05sl20,5.10 小结,了解VBScript脚本语句 掌握VBScript脚本的常量、变量、数组及运算符 掌握VBScript脚本的过程及应用 掌握VBScript脚本的函数及应用 熟悉VBScript脚本的流程控制语句,