VBScript语言概述
在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的编程语言
一、VBScript脚本语言的特点
- 语言简单,易学易懂
- 增强客户端功能、降低WEB服务器负荷。VBScript使得程序在将表单数据发送到服务器之前,就可以验证表单的数据,以进行相应处理,还可以动态的创建新的WEB内容,甚至可以编写完全在客户端运行的程序,并可以用于扩展客户端的功能
- 可用于ASP程序设计。ASP提供了一个服务器端的脚本环境,应用VBScript语言可编写动态、交互、高效的应用程序。
- 多种嵌入形式。开发者可以应用免费的VBScript脚本来编写程序。VBScript与IE浏览器是集成在一起的,VBScript和ActiveX空间也可以在应用程序中结合使用以实现特定的功能
二、VBScript代码编写格式
VBScript是VB语言的子集,他是专门为IE开发的编程语言,使用VBScript的目的是控制页面内容的动态交互性。使用VBScript可以编写服务器端脚本,也可以编写客户端脚本
1.服务器端脚本编写格式
服务器端脚本在服务器上执行,由服务器根据脚本的执行结果生成相应的HTML界面,发送到客户端。只有服务器端脚本才能实现真正的“动态网页“的功能。服务器端脚本的执行不受浏览器的限制,脚本在网页通过网络传送给浏览器之前被执行,WEB浏览器收到的只是标准的HTML文件
在ASP程序中,编写服务器端脚本有两种方法。
a.方法一:将脚本代码放在<%...%>标识符之中

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>服务器端脚本1</title> </head> <% dim num num=1 if num <> 0 then response.Write("欢迎来到ASP编程世界") %> <body> </body> </html>
b.方法二:将脚本代码放置在<script>...</script>标记之间

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>服务器端脚本2</title> </head> <script language="vbscript" runat="server"> dim num num=1 if num <> 0 then response.Write("欢迎来到ASP编程世界") </script> <body> </body> </html>
2.客户端脚本编写格式
客户端本由浏览器解释执行。由于客户端脚本随着HTML页面下载到客户端浏览器,在用户本地执行,因此其执行速度明显快于服务器端脚本。客户端脚本常用于做简单的客户端验证或实现网页特效等。
客户端脚本的代码是写在<script></script>标记之间的。可以将编写完成的代码块放置在HTML文档中的任何位置。但是通常情况下,是在代码块放在<Head>标记之间的,以便查看和使用
<script language="脚本语言" [event="事件名称"] [for="对象名称"]>
<!--
//脚本代码
-->
</script>
language:用于指定脚本代码使用的语言
event:用于指定脚本代码相关联的事件
for:用于指定脚本代码相关联的对象

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>客户端脚本</title> <script language="VBSCRIPT" event="onClick" for="btn1"> MsgBox "您单击了此按钮" </script> </head> <body> <input name="btn1" value="单击按钮" type="button" id="btn1"/> </body> </html>
注意:VBScript的MsgBox函数不能在服务器端脚本中使用,因为信息框是用户界面元素,不能在服务器端执行
三、常量与变量
常量与变量是VBScript的常见元素,本节介绍VBScript中常量、变量的声明和赋值以及如何确定变量的作用域和存活期
1.VBscript常量
常量是具有一定含义的名称,用于代替数值和字符串,在程序执行期间其值不会发生变化。常量可分为普通常量和符号常量。普通常量可以称为文字常量,它不必定义就可以在程序中使用,而符号常量则要以Const语句加以声明才能使用
a.文字常量
按照数据类型的不同,分为字符串常量、数值常量和日期时间常量
字符串常量:主要是由一对双引号括起来的字符序列组成
数值常量:分为整形常量、长整型常量和浮点型常量。其中整形常量和长整型常量可以用十进制、十六进制和八进制三种形式表示
日期和时间常量::用一对#号括起来#2007-12-09 11:12:32#
b.符号常量
符号常量使用一个标识符表示的常量,用于代替数字和字符串,在程序执行期间其值不会发生变化。在VBScript中,可以通过关键字Const语句定义。分为预定义符号常量和用户自定义常量
预定义常量:是在VBScript中建立的,并在使用之前不用定义的常量。在代码的任意位置都可以使用此常量所表示的说明值。例如:vbCr表示回车;Empty表示没有初始化之前的值
用户自定义常量:通过Const语句来创建的。使用Const语句可以创建具有一定意义的字符串型或数值型常量,并赋予一个初始值。例如:Const PI=3.1415 Const OlympicsBJ=#2008-8-8#
2.变量的声明和赋值
变量是一种使用方便的占位符,主要用于引用计算机的内存来存储脚本运行时更改的数据类型。在VBScript中的变量不区分大小写。
VBScript中声明 变量有两种方式,一种是显式声明,另一种是隐式声明
显示声明:通过变量声明语句来声明变量,它可以在定义变量的时候为变量在内存中预留内存空间。声明语句包括Dim语句、public语句和private语句。一个声明语句可以声明多个变量,并应用逗号将多个变量分开
① 通过Dim语句声明变量
Dim 变量名 [,变量名]

<% dim i dim Conn,ConnStr,Rs,sqlStr dim array(10) %>
② 通过public语句声明变量
public 变量名 [,变量名]
例如:public Standard
③ 通过Private语句声明变量
private语句是用来声明私有变量的,声明的变量只能在声明它的脚本中使用
private 变量名 [,变量名]
隐式声明:因为在VBScript中只有一种数据类型,即遍体类型,所以在VBscript中使用一个变量前是无需声明的,可以直接在脚本代码中使用。当在程序运行过程中检测到该变量时,系统会自动在内存中开辟存储区域并登记该变量名。
为了避免隐式声明时因写错变量名等一起的问题,在VBScript中提供了Option Explcit语句。强制声明会增加代码量,但可以提高程序的可读性,减少出错的机会,Option Explcit语句必须位于ASP处理命令之后、任何HTML文本或脚本命令之前。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Option Explicit %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% dim str str="sss" %> </body> </html>
3.变量的作用域和存活期
①变量的作用域:由声明的位置决定。分为脚本级变量和过程级变量

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>区分变量的作用域</title> </head> <body> <% dim str '声明脚本级变量 str="体育项目" '赋值 call GetResult() '调用子过程 Response.Write str '输出变量的值 '下面定义子过程 sub GetResult() dim str '声明过程级变量 str="网球、乒乓球、足球..." end sub %> </body> </html>
四、运算符的应用
运算符是完成操作的一系列符号。VBScript中运算符包括算数运算符、连接运算符、关系运算符、逻辑运算符等几种类型。当表达式包含多个运算符时,将按预定顺序计算每一部分,该顺序称为优先级
1.算数运算符
+:加法
-:减法
*:乘法
^:指数次方
/:相除返回浮点型结果
:相除返回整形结果
2.连接运算符
连接运算符是将两个字符串连接起来形成一个字符串,有+和&两种,其中+连接两个字符串,&可以用来连接两种不同类型的数据

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% dim s1,s2,s3,r1,r2 s1="today " s2="is " s3=#12/25/09# r1=s1 + s2 '字符串与字符串的连接 r2=r1 & s3 '字符串与日期的连接 response.Write r2 %> </body> </html>
3.关系运算符
关系运算符用于对两个表达式的值进行比较

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>关系运算符</title> </head> <body> <% Dim x x=100 if x <> 200 then '判断x是否与200相等 response.Write "不相等" else response.Write "相等" end if %> </body> </html>
4.逻辑运算符
逻辑运算符通常也称为布尔运算符,专门用于逻辑之间的运算。用于完成逻辑运算符的运算符有以下几种
①取反 Not
②与运算 And
③或运算 Or
④异或运算 Xor:如果两个表达式的结果同时为真或同时为假则结果为假,不然为真
⑤等价运算符 Eqv:是异或运算符取反的结果
五、函数的应用
VBScript提供了许多重要的内部函数,如字符串函数、转换函数、日期和时间函数、判断函数、数学函数以及其它函数的应用
1.字符串处理
函数 | 说明 |
Asc(str) | 返回第一个字符的ASCII字符代码 |
InStr(start,str1,str2) | 返回从字符串str1的start位置查找str2第一次出现的位置,str1和str2同时返回0 |
Lcase(str) | 将字符串中的所有字符转换为小写 |
Left(str,len) | 返回字符串str最左侧长度为len的字符串 |
Len(str) | 返回字符串的长度 |
Ltrim(str) | 去除str左侧的空格 |
Mid(str,start,len) | 返回从str的第start个字符开始的len个字符 |
Right(str,len) | 返回字符串右侧的len个字符 |
Rtrim(str) | 去掉字符串右边的空格 |
StrComp(str1,str2,[method]) | 使用method方式比较两个字符,其中0表示二进制方式比较,1表示文字方式比较。比较的结果返回为1、-1、0 |
InStrRev(str1,str2) | 返回字符串str1中从尾部开始搜索某字符串str2第一次出现的位置 |
Trim(str) | 去除字符串两端的空格 |
Ucase(str) | 将字符串str转换为大写 |

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>取字符串的子串</title> <style type="text/css"> <!-- .STYLE1 { color: #3333CC; font-style: italic; font-weight: bold; } --> </style> </head> <body> <span class="STYLE1">代码要求:取出”2015-12-14 15:05:03“中的年月日部分: </span><br> <% dim r,len,str r=#2015-12-14 15:05:03# len=InStr(1,r," ") str=Left(r,len) response.Write str %> </body> </html>
2.数据转换
转换函数用于将一种类型的数据转换为其它类型的数据
函数 | 说明 |
CBool(expression) | 将expression转换为布尔类型 |
CByte(expression) | 将expression转换为单字节类型 |
CDate(expression) | 将expression转换为日期类型 |
CDbl(expression) | 将expression转换成双精度类型 |
Chr(expression) | 将expression所表示的ASCII转换为对应字符串 |
CInt(expression) | 将expression转换成整数类型 |
CLng(expression) | 将expression转换成长整数类型 |
CSng(expression) | 将expression转换成单精度类型 |
CStr(expression) | 将expression 转换成字符串类型 |
Hex(expression) | 将expression 转换成十六进制类型 |
Int(expression) | 将expression 向下取整 |
Fix(expression) | 将expression 向上取整 |
Oct(expression) | 将expression 转换成八进制类型 |
如例:将字符串转换为整形

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>将字符串转为整形</title> </head> <body> <% dim str,num str="100" num=Cint(str)+2 response.Write num %> </body> </html>
3.日期时间数据的处理
日期时间函数用于对日期、时间数据进行处理
函数 | 说明 |
Date() | 返回系统当前日期 |
DateSerial(year,moth,day) | 返回日期子类型 |
DateVlaue(String) | 将字符串转换为日期型 |
Day(Date) | 返回给定日期中的天 |
Hour(Time) | 返回给定时间中的小时 |
Minute(Time) | 返回给定时间中的分钟 |
Second(Time) | 返回给定时间中的秒 |
Now() | 返回当前系统的日期和时间 |
Time() | 返回当前系统的时间 |
TimeVlaue(String) | 将字符串转换为时间型 |
Year(Date) | 返回当前日期的年 |
Month(Date) | 返回当前日期的月份 |
WeekDay(Date) | 返回一周中的某一天 |
DateDiff("str",d1,d2) |
计算两个日期之间的间隔,str为yyyy表示计算年间隔,为m表示计算月间隔, 为d表示日间隔,为ww表示星期间隔,为h表示计算小时间隔,为s表示计算秒间隔 |
DateAdd("str",num,d1) |
返回日期d1加上数字num后的日期,其中num的单位根据str的值而不同 |

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>得到计算的时</title> </head> <body> <script language="vbscript" runat="server"> response.write("今天是星期" & WeekDay(Date)-1 & "<br>") response.write("两年前的今天是" & DateAdd("yyyy",-2,Date()) & "<br>") response.write("距离2018-05-01还有:" & DateDiff("d",Date(),#2018-05-01#) & "天") </script> </body> </html>
4.数据类型的判断
函数 | 说明 |
IsArray(Var) | 判断var是否为一个数组 |
IsDate(Var) | 判断var是否可以转换为日期类型 |
IsEmpty(Var) | 判断var是否已经被初始化 |
IsNull(Var) | 判断var是否为空 |
IsNumber(Var) | 判断var是否为数字 |
IsObject(Var) | 判断var是否为对象 |
VarType(Var) | 判断var的类型,返回0表示空,2表示整数,7表示日期,8表示字符串,11表示布尔值,8204表示数组 |
数据类型判断函数应用比较广泛,在使用数据之前判断此数据的类型,有助于提高程序运行的有效性

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>判断函数应用</title> </head> <body> <% dim num num=1 if not isempty(num) then response.Write "不为空" else response.Write "空值" end if %> </body> </html>
5.数学函数的应用
函数 | 说明 |
Rnd | 用于返回一个随机数 |
Randomize | 初始化随机数生成器 |
Int | 返回数字的整数部分 |
Fix | 返回数字的整数部分 |
Abs | 返回数字的绝对值 |
Exp | 返回e的幂次方 |
Log | 返回数值的自然对数 |
Sqr | 返回数值的平方根 |
Round | 返回按指定位数进行四舍五入对的值 |
代码:生成随机数

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>生成随机数</title> </head> <body> <% dim i,r,str for i=1 to 3 Randomize r=Int((6*rnd)+1) str=str&r next response.Write "生成随机数为:" & str %> </body> </html>
六、数组的创建与应用
数组是有序数据的集合。数组中的每一个元素都属于同一数据类型,用一个统一的数组名和下标可以唯一确定数组中的元素,下标是放在紧跟在数组名之后的括号中。数组的最大维数为60
1.创建数组
在VBScript中有固定数组和动态数组两种
①固定数组:数组大小在程序运行时不可改变的数组。数组在使用前必须先声明
dim array(i)
在VBScript中,数组的下标是从0开始计数的,数组的长度为i+1
例如:
dim ary(3) '该数组的长度是4而不是3
dim db_array(5,10) '声明一个6*11的二维数组
声明数组后就可以通过下标对数组进行指定赋值
例如:
dim ary(3)
ary(0)="demo"
②动态数组:声明数组时也可以不指明它的下标,这样的数组叫做变长数组
例如:
dim ary()
虽然动态数组声明时无须指明下标,但在使用它之前必须使用ReDim语句确定数组的维数
dim array()
Redim array(i)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用动态数组</title> </head> <body> <% dim i dim MyArray() '声明动态数组 Redim MyArray(3) '定义长度为4 for i=0 to 3 MyArray(i)=2*i next response.Write "数组MyArray中元素为:<br>" for i=0 to 3 response.Write MyArray(i) & "<br>" next %> </body> </html>
使用Redim语句可以多次改变元素下标,即重新动态调整动态数组大小的次数是没有限制的,但是使用Redim语句重新声明数组后,原有数组的数值将会全部清空,如果希望保留原有下标数值,则可以I使用Preserve关键字
例如:
dim ary()
Redim ary(5)
......
Redim Preserve ary(Ubount(ary)+1)
以上代码将数组长度加1,但数组中原有的元素值不变。Ubound()函数返回原有数组的最大索引
2.应用数组函数
数组函数用于对数组的操作,主要有LBound函数、UBound函数、Split函数和Erase函数
①LBound函数:返回指定数组维的最小可用下标
LBound(函数名称,[,维数])
维数是指要返回指定维下界的整数,如果为1则表示第一维,为2表示第二维...如果省略维数,则默认维数为1
例如:代码结果为0

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用动态数组</title> </head> <body> <% dim ary(5,10) response.Write(LBound(ary,2)) %> </body> </html>
②UBound函数:返回指定数组维的最大可用下标
UBound(函数名称,[,维数])
③Split函数:返回基于0的一维数组,其中包含指定数组的子字符串。
Split(expression [,分隔符 [,count [,比较类型]]])
expression:表示需要处理的字符串,包含子字符串和分隔符。如果表达式长度为零,则返回空数组
count:可选项,表示被返回的子字符串数目,如果为-1,则返回所有子字符串。
比较类型:为可选项,用于指示在计算子字符串时使用的比较类型的数值,0表示二进制比较,1表示文本比较,2表示基于数据库中包含信息的比较
例如:读取字符串中以符号/分割的各子字符串

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用动态数组</title> </head> <body> <% dim str,str_sub,i str="ASP程序开发/VB程序开发/.NET程序开发" str_sub=Split(str,"/") for i=0 to Ubound(str_sub) response.Write(i+1 & ". " & str_sub(i) & "<br>") next %> </body> </html>
④Erase函数:重新初始化固定大小数组的元素,并释放数组的存储空间。
Erase array
七、程序控制语句
1.选择语句
①if...then...end if
②if...then...else...end if
③select case 变量或表达式
case:结果1
命令序列
...
end select
2.循环语句
① do...loop语句分为两种
循环条件出现在语句的开始部分
do while 条件表达式
循环体
Loop
或
do util 条件表达式
循环体
Loop
循环条件出现在语句的结尾部分
do
循环体
loop while 条件表达式
或
do
循环体
loop util 条件表达式
其中while和util关键字的作用相反,while是条件为true时执行循环体,而util是条件为true时退出循环体
在do...loop语句中,当条件表达式在前时,表示在循环条件为真时才能执行循环体,而表达式在后时,至少会执行一次循环体
在do...loop语句中,强制退出循环使用exit do,for语句中使用exit for
例如:应用do...loop计算多个数字的和

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>do loop</title> 7 </head> 8 <body> 9 <% 10 dim num,sun 11 num=0 12 sum=0 13 do until num>50 14 num=num+1 15 sum=sum+num 16 loop 17 response.Write("求和得到的结果是: " & sum) 18 %> 19 </body> 20 </html>
②while...wend循环控制语句 :当指定的条件为true时执行一系列的语句,该语句与do...loop循环语句类似
while condition
[statement]
wend
condition:数值或字符串表达式,其计算结果为true或false。
③for...next循环控制语句:for...next语句是一种强制性的循环语句
for count=start to end [step number]
statement
[exit for]
Next
④ for each ...next循环控制语句:主要用于数组或集合中的每个元素而重复执行的语句,特别是在不知道集合长度的时候是不错的选择
for each 元素 in 集合或数组
循环体
[exit for]
next
⑤exit退出循环语句:主要用于退出,do...loop、for...next、function、sub代码块,其对应的退出语句分别为exit do、exit for、exit function、exit sub
八、过程的创建与调用
过程是一组能执行指定任务的脚本命令,在VBScript中,过程分为两种,分为Sub过程和Function过程,两者的区别在于sub没有返回值,而function过程有返回值
1.调用sub过程
sub过程指包含在sub和end sub之间的VBScript语句,该过程执行操作但是没有返回值,sub过程可以使用参数(参数可以为调用过程传递的常量、变量或表达式)
声明一个过程的语法格式如下:
Sub 子程序名([参数1,参数2])
......
end sub
在asp页面中,调用sub有以下方式
①使用call语句调用sub过程
call 子程序名(参数1,参数2) ‘使用call语句可以将控制权传递给sub过程
②直接调用sub过程
子程序名 参数1,参数2...
例如:自定义sub过程判断闰年

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>判断闰年</title> 7 </head> 8 <body> 9 <% 10 sub y(num) 11 if (num mod 4=0) and (num mod 100 <> 0) then 12 response.Write(num & "年:是闰年<br>") 13 else 14 response.Write(num & "年:不是闰年<br>") 15 end if 16 end sub 17 call y(2000) 18 y 2020 19 %> 20 </body> 21 </html>
2.调用function过程
Function过程是包含在Function和end Function之间的一组VBScript语句,Function通过过程名返回一个值,这个值是在过程的语句中赋值给过程名的。Function返回值的类型总是Varian
Function过程的语法格式如下:
[public | private] Function name ([arglist])
[statements]
[name=expression]
[exit Function]
[Statemtns]
[name=expression]
end function
function过程各参数说明:
参数 | 说明 |
public | 表示Function过程可以被脚本中的所有其他过程访问 |
private | 表示Function过程只能被声明它的脚本中的过程访问 |
name | 过程名称 |
arglist | 参数列表 |
statements | 主体中执行的语句组 |
expression | 常量、变量或表达式 |
Function过程的调用方法和sub过程的调用方法相同。当Function过程没有返回值的时候可以使用call来调用过程;当Function过程有返回值时,使用过程名来调用过程
例如:定义Function过程限制标题显示的长度

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>function</title> 7 </head> 8 <body> 9 <% 10 function title__(tit) 11 if(len(tit)>20) then 12 title__=left(tit,20)&"..." 13 else 14 title__=tit 15 end if 16 end function 17 dim str 18 str = "春之颂 大型电影交响音乐会将于2018年4月18日19:30 在国家大剧院盛装上演" 19 response.Write "原标题名称为:"&str&"<br>" 20 response.Write "修正后的标题为:"&title__(str) 21 %> 22 </body> 23 </html>