VBScript 循环:Do While、Do Until、While、For Each (示例)
VBScript 中使用循环的原因?
循环用于一次又一次地执行同一块代码。VBScript 中有许多循环语句。一些 VBScript 循环语句是 Do While、Do Until、For…..Next 等。那么,您将如何决定为您的需求使用哪种循环语句?
在执行循环时,您可能知道也可能不知道要执行指令集多少次。例如,您想将两个数字相加十次。在这种情况下,您已经知道要重复一个代码块 10 次。假设您想计算两个数字相加,直到一个特定变量变为真。在这里,您不知道循环需要执行多少次。因此,根据您是否知道执行次数,您可以使用不同类型的循环语句。
如果想将一个代码块重复有限次,即知道要重复代码块的次数,则使用 For…Next 循环语句。
当您想重复一个代码块直到某个条件变为真或假时,即当您不知道要执行代码块的次数时,将使用 Do While 和 Do Until 循环语句。
让我们一一来看这些循环语句。
VBScript Do While 循环
如果您不知道需要执行代码块的次数,那么您将使用 Do While 循环。例如,当变量 x 的值小于 5 时,您希望输出消息“Welcome”。在这种情况下,将使用 Do While 循环。
<script type="text/vbscript"> Dim x x=1 Do While x<5 document.write("Welcome.") x=x+1 Loop </script>
如果您尝试执行代码,您将获得如下输出:
该块执行了四次(当 x=1、2、3 和 4 时),当 x 的值变为 5 时循环结束。如果您忘记了语句 x=x+1,那么您的循环将变成一个永不结束的循环。这种循环称为无限循环。无限循环甚至可能导致系统崩溃。因此,在使用 Do While 循环语句时,您应确保有一些代码能在某个时刻使循环条件为真。
如果一开始将值 7 分配给变量 x,那么代码块将不会执行一次。假设您希望至少执行一次代码块,无论条件如何,那么您可以使用 Do While 循环。像这样修改代码:
VBScript 示例
<script type="text/vbscript"> Dim x x=7 Do document.write("Welcome.") x=x+1 Loop While x<5 </script>
如果执行此代码,您将仅看到一次“Welcome”消息。这里只在执行一次循环后才检查条件。
VBScript Do Until 循环
‘Do Until’循环也用于您不知道需要执行代码块的次数的情况。Do Until 循环中的第一个代码块(Do While x<5)等效于下面的代码块:
<script type="text/vbscript"> Dim x x=1 Do Until x=5 document.write("Welcome.") x=x+1 Loop </script>
这将为您提供与 Do While 循环中的第一个代码块相同的输出。您将看到四次 Welcome 消息。与 Do…..Loop While 类似,我们也有 Do…Loop Until。
如果您想在 Do While 或 Do Until 循环的中间退出,那么您可以使用 Exit Do 语句。假设您想在上述程序中当 x 的值变为 3 时退出该块,那么您需要像这样编写代码:
<script type="text/vbscript"> Dim x x=1 Do Until x=5 If x=3 Then Exit Do document.write("Welcome.") x=x+1 Loop </script>
如果执行代码,您的输出将如下所示:
这里,当 x 的值变为 3 时,循环退出。
VBScript While 循环
While…Wend 循环与 Do While 循环类似,但使用不普遍。由于 Do While 比 While…..Wend 循环更结构化,因此程序员通常使用 Do While 语句。
<script type="text/vbscript"> Dim x x = 1 While x < 5 document.write("Welcome.") x=x+1 Wend </script>
输出将是
VBScript For-Next 循环
For-Next 循环可用于将代码块执行特定次数。“VBScript For 循环”指定了计数器变量及其起始值和结束值。Next 语句将计数器变量加一。
For i = 1 To 5 document.write("The number is " & i & " ") Next
如果执行代码,您将获得如下输出:
VBScript For-Step-Next 循环
默认情况下,计数器变量递增一。如果您想按指定值增加或减少计数器变量,那么您可以使用 For….Step….Next 循环。假设在上面的代码中,您想将计数器增加 2,然后像这样修改您的代码:
For i = 1 To 5 Step 2 document.write("The number is " & i & "<br />") Next </script>
此代码的输出将是:
如果您想在 For Next 或 For Step Next 循环的中间退出,那么您可以使用 Exit for 语句。假设您想在上述程序中当 i 的值变为 3 时退出该块,那么您需要像这样编写代码:
<script type="text/vbscript"> For i = 1 To 5 Step 2 If i=3 Then Exit For document.write("The number is " & i & "<br />") Next </script>
输出将是
VBScript For-Each-Next 循环
如果您想重复一个代码块以遍历集合中的每个项或 VBS 数组的每个元素,那么您需要使用 For…Each…Next 循环。
<script type="text/vbscript"> Dim students(4) students(0)="John" students(1)="Hanah" students(2)="Sarah" students(3)="Kevin" students(4)="Emma" For Each x In students document.write(x & "<br />") Next </script>
上述指定代码的输出将是:
代码示例
<html> <head> <script type="text/vbscript"> Dim name, length name = InputBox("Enter your name") length = Len(name)’Gives length of the input string For i = 1 To length txt = Mid(name,i,1)'Returns a specified number of characters from a string, the first parameter is the string, second parameter is the starting position and third parameter is the number of characters to return If txt="a" or txt="A" or txt="e" or txt="E" or txt="i" or txt="I" or txt="o" or txt="O" or txt="u" or txt="U" Then counter = counter+1 End If Next document.write("Hi " & name & "!!!Your name contains " & counter & " vowels.") </script> </head> <body> </body> </html>
将文件另存为 loop.html 在您喜欢的任何位置。现在,在 Internet Explorer 中打开文件,您将看到一个要求您输入名字的框。输入一个名字,例如 Aaron,如下所示:
点击确定,您的输出将如下所示:
摘要
- 循环语句用于一次又一次地执行同一块代码。
- 当您事先不知道要执行代码块多少次时,您将使用 Do-While、Do-Until 和 While-Wend 循环。
- 如果您已经知道需要执行代码块的次数,您将使用 For-Next、For-Next-Step 和 For-Each-Next 循环。