[设为首页] [加入收藏]    
提 示: 站长书库上线了。 站长招聘上人才沃
站长首页  |  站长下载  |  站长工具
站长素材  |  广告代码  |  网页特效
站长书库  |  站长招聘  |  建站软件
  您当前的位置: 首页 > 网络编程 > VBScript >
下一篇:VBScript 过程 上一篇:VBScript 条件语句
VBScript 循环语句

使用循环重复执行代码

循环用于重复执行一组语句。循环可分为三类:一类在条件变为False之前重复执行语句,一类在条件变为True之前重复执行语句,另一类按照指定的次数重复执行语句。

在VBScript中可使用下列循环语句:

Do...Loop:当(或直到)条件为True时循环。

While...Wend:当条件为True时循环。

For...Next:指定循环次数,使用计数器重复运行语句。

ForEach...Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。

使用Do循环

可以使用Do...Loop语句多次(次数不定)运行语句块。当条件为True时或条件变为True之前,重复执行语句块。

当条件为True时重复执行语句

While关键字用于检查Do...Loop语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的ChkFirstWhile示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastWhile示例)。在ChkFirstWhile过程中,如果myNum的初始值被设置为9而不是20,则永远不会执行循环体中的语句。在ChkLastWhile过程中,循环体中的语句只会执行一次,因为条件在检查时已经为False。

SubChkFirstWhile()
Dimcounter,myNum
counter=0
myNum=20
DoWhilemyNum>10
myNum=myNum-1
counter=counter+1
Loop
MsgBox"循环重复了"&counter&"次。"
EndSub

SubChkLastWhile()
Dimcounter,myNum
counter=0
myNum=9
Do
myNum=myNum-1
counter=counter+1
LoopWhilemyNum>10
MsgBox"循环重复了"&counter&"次。"
EndSub

重复执行语句直到条件变为True

Until关键字用于检查Do...Loop语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的ChkFirstUntil示例);或者在循环至少运行完一次之后检查条件(如下面的ChkLastUntil示例)。只要条件为False,就会进行循环。

SubChkFirstUntil()
Dimcounter,myNum
counter=0
myNum=20
DoUntilmyNum=10
myNum=myNum-1
counter=counter+1
Loop
MsgBox"循环重复了"&counter&"次。"
EndSub

SubChkLastUntil()
Dimcounter,myNum
counter=0
myNum=1
Do
myNum=myNum+1
counter=counter+1
LoopUntilmyNum=10
MsgBox"循环重复了"&counter&"次。"
EndSub

退出循环

ExitDo语句用于退出Do...Loop循环。因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在If...Then...Else语句的True语句块中使用ExitDo语句。如果条件为False,循环将照常运行。

在下面的示例中,myNum的初始值将导致死循环。If...Then...Else语句检查此条件,防止出现死循环。

SubExitExample()
Dimcounter,myNum
counter=0
myNum=9
DoUntilmyNum=10
myNum=myNum-1
counter=counter+1
IfmyNum<10ThenExitDo
Loop
MsgBox"循环重复了"&counter&"次。"
EndSub

使用While...Wend

While...Wend语句是为那些熟悉其用法的用户提供的。但是由于While...Wend缺少灵活性,所以建议最好使用Do...Loop语句。

使用For...Next

For...Next语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。
例如,下面的示例将过程MyProc重复执行50次。For语句指定计数器变量x及其起始值与终止值。Next语句使计数器变量每次加1。

SubDoMyProc50Times()
Dimx
Forx=1To50
MyProc
Next
EndSub

关键字Step用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量j每次加2。循环结束后,total的值为2、4、6、8和10的总和。

SubTwosTotal()
Dimj,total
Forj=2To10Step2
total=total+j
Next
MsgBox"总和为"&total&"。"
EndSub

要使计数器变量递减,可将Step设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量myNum每次减2。循环结束后,total的值为16、14、12、10、8、6、4和2的总和。

SubNewTotal()
DimmyNum,total
FormyNum=16To2Step-2
total=total+myNum
Next
MsgBox"总和为"&total&"。"
EndSub

ExitFor语句用于在计数器达到其终止值之前退出For...Next语句。因为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,所以可以在If...Then...Else语句的True语句块中使用ExitFor语句。如果条件为False,循环将照常运行。

使用ForEach...Next

ForEach...Next循环与For...Next循环类似。ForEach...Next不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。

在以下示例中,Dictionary对象的内容用于将文本分别放置在多个文本框中:

<HTML>
<HEAD><TITLE>窗体与元素</TITLE></HEAD>
<SCRIPTLANGUAGE="VBScript">
<!--
SubcmdChange_OnClick
Dimd'创建一个变量
Setd=CreateObject("Scripting.Dictionary")
d.Add"0","Athens"'添加键和项目
d.Add"1","Belgrade"
d.Add"2","Cairo"

ForEachIind
Document.frmForm.Elements(I).Value=D.Item(I)
Next
EndSub
-->
</SCRIPT>
<BODY>
<CENTER>
<FORMNAME="frmForm"

<InputType="Text"><p>
<InputType="Text"><p>
<InputType="Text"><p>
<InputType="Text"><p>
<InputType="Button"NAME="cmdChange"VALUE="单击此处"><p>
</FORM>
</CENTER>
</BODY>
</HTML>

    关于我们 - 联系我们 - 广告服务 - 网站地图 - 版权声明 - 人才招聘