使用条件语句和循环语句可以控制VBScript 的流程。使用条件语句可以编写进行判断和重复操作的 VBScript 代码。当一条语句需要重复执行时,就要用到循环语句。
第一节、条件语句
条件语句 条件语句和我们的某些思维类似,可以通过比较的方法进行思考,当有两个或者多个事物可以选择时,人们总是会选择最优越的,然后再作行动的决定.条件语句通过if去判断一个条件的真假,如果为真(True),就去执行(then)一个任务,如果为假就去执行另一个(else)任务;通常要判断的条件是一个比较运算符的值或用变量表示的一个进行比较的表达式;
一、单分支结构
if 条件 then 任务 else 其它任务 end if |
示例 sl4-1.asp
<% dim Email Email="yy126.com" '作为条件检查Email中是否包含有@ if InStr(Email,"@")=0 then response.write "你填写的Email不正确!!" else response.write "你填写的Email正确!!" end if %> |
示例 sl4-2.asp
<% dim a,b '给定密码 a="123456" '再次输入密码b b="234567" if StrComp(a,b)<>0 then response.write "你输入的密码不正确" end if %> |
示例解读
函数StrComp进行二进制比较,是一种严格比较,例如:比较a与a则相等,而a与A检查结果会不相等。
二、简单多分支结构
if 条件1 then 任务1 elseif 条件2 then 任务2 elseif 条件3 then 任务3 ........ else 其它任务 end if |
示例 sl4-3.asp
<% dim a '给定密码 a="123456789123456789123456789123456789" '检查密码长度 if len(a)<6 then response.write "你的密码太短,密码长度至少6位" elseif len(a)>32 then response.write "你的密码太长,密码不能超过32位" end if %> |
三、多分支结构
Select Case 结构提供了 If...Then...Else If...结构的一个变通形式,可以从多个语句块中选择执行其中的一个。Select Case 语句提供的功能与简单多分支语句类似,但是可以使代码更加简练易读。Select Case 结构在其开始处使用一个只计算一次的简单测试表达式。表达式的结果将与结构中每个 Case 的值比较,如果匹配,则执行与该 Case 关联的语句块:
Select Case 条件
Case 结果1 任务1 Case 结果2 任务2 Case 结果3 任务3 ......... Case else 其它任务 End Select |
示例 sl4-4.asp
<% dim aa,bb,cc,dd,ee,ff aa=#00:00:00# bb=#07:00:00# cc=#12:00:00# dd=#14:00:00# ee=#20:00:00# ff=#23:59:59# select case true case time>=aa and time<bb response.write("早上好 ,欢迎你的光临 !") case time>bb and time<cc response.write(" 上午好,欢迎你的光临 !") case time>cc and time<dd response.write("中午好 ,欢迎你的光临 !") case time>dd and time<ee response.write("下午好 ,欢迎你的光临 !") case time>ee and time<ff response.write("晚上好 ,欢迎你的光临 !") end select %> |
示例解读:
首先给定保存着特定时间的一系列变量,再给定多分支Select Case结构的条件为true,然后给定各分支case常量的表达式,这些表达式中使用了逻辑与And,当And两边的表达式都为true时返回true。程序运行时会检查对比Select Case的条件并与Case常量的值进行比较,两者如果相等就执行Case常量下面的语句,如果不相等就检查对比下一个Case常量,注意time是返回当前时间的一个函数,后面没有添加圆括号,这种不加圆括号的使用方法在asp中很常见。
第二节、循环语句
循环语句是计算机语言的结构形式之一,当一条语句或语句序列需要重复执行时,就要用到循环语句,
一、Do...Loop循环
Do...Loop 语句根据条件的真假情况确定是否执行循环,对条件的判断使用关键字 While 或者 Until,While用于当条件为真时执行循环,Until用于当条件为假时执行循环。
1、Do While condition ...Loop
将While放在循环语句的入口处,即循环体的前面,在进入循环之前检查条件condition,如果condition为true就执行循环体,如果条件为false就退出循环;
示例 sl4-5.asp
<% dim i i=0 Do While i<10 '设置一个入口性循环 i = i+1 '使变量自加运算 Loop response.write("循环次数"&i) '10 %> |
2、Do ...Loop While condition
将While放在循环语句的出口处,在循环体被执行一次后检查条件condition,如果condition为true就执行循环体,如果条件为fasle就退出循环,出口型循环的特点是无论条件是否成立,循环至少执行一次。
示例 sl4-6.asp
<% dim i i=0 Do '设置一个出口性循环 i = i+1 '使变量自加运算 Loop While i<10 response.write("循环次数"&i) '10 response.write "<br>" dim j j=0 Do '设置一个出口性循环 j = j+1 '使变量自加运算 Loop While j >10 '条件不成立但也要循环1次 response.write("循环次数"&j) %> |
二、While...Wend循环
While...Wend语句缺少灵活性,建议最好使用 Do...Loop 语句。
示例 sl4-7.asp
<% dim i i = 0 while i<10 i=i+1 response.write i response.write("<br>") Wend %> |
三、For...Next循环
For...Next 语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。
格式:
For counter=start To end [step number]......Next
参数:
end 计数器变量的中止值
counter 循环计数器变量
start 计数器变量的初始值
[step number] 用于指定计数器变量counter每次增加或减少的值,如果number是正值,则为递增,如果为负值则为递减,step是可选的,如果省略,则默认值为1
示例 sl4-8.asp
<% dim sum,i sum=0 For i=100 To 1 step -1 sum=sum+i response.Write i&"<br>" Next response.Write "合计:"&sum %> |
四、for each...next循环
for each...next循环与 for...next 循环类似,for each...next不指定语句循环运行的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句,这在不知道集合中元素的数目时非常有用;
格式:
for each element in muster ....... next |
element为集合muster中的元素
muster为某个集合或对象
示例 sl4-9.asp
<% dim sum '声明一个变量sum Dim myarray(3) '声明长度为4的数组 myarray(0)="a" myarray(1)="b" myarray(2)="c" myarray(3)="d" for each sum in myarray response.write(sum) next %> |
示例解读;
首先定义长度为4的一个数组,然后为数组填充填充元素abcd,再使用for each in 循环枚举数组中的每一个元素;
四、强行退出循环
Exit Do语句用于退出Do...Loop 循环,Exit For语句用于退出For...Next循环,通常使用条件语句If...Then...Else对循环语句再进行一次判断,如果为真就中止循环;这样可以防止死循环的出现;
示例 sl4-10.asp
<% dim sum,i sum=0 For i=1 To 100 step 2 sum=sum+i if sum>200 then Exit For end if Next response.Write sum %> |
四、容错语句
若不使用容错语句,一旦程序出现了错误页面就会显示错误信息并终止运行,使用了容错语句可以在遇到错误时跳过去,继续执行下一句,而且还防止了错误信息的显示,但是当你使用了容错语句后,在调试程序时就不能发现错误了,容错语句语法
如下:
<% On Error Resume Next ........ %> |