📄 8-11.cfm.htm
字号:
<html>
<head>
<title>用FOR循环执行重复操作</title>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0">
</head>
<body>
<font FACE="宋体" SIZE="5"><b>
<p ALIGN="JUSTIFY">用FOR循环执行重复操作</p>
</b></font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">当你需要重复执行一组语句一定次数时,你可以使用一个FOR...NEXT循环,如下例所示:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">for i=1 to 500</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">Hello Again!</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">next</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">在这个例子中,句子“Hello Again!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">被在浏览器中打印500次。FOR语句和NEXT语句之间的任何语句都将被重复执行。甚至,象这个例子一样,当循环体内是HTML代码时,它也将被重复执行。</p>
<p ALIGN="JUSTIFY">通过使用关键字STEP,你可以构造反向的循环。考虑下面的例子:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">For i=500 to 1 step </font><font SIZE="3">–</font><font FACE="宋体"
SIZE="3">1</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">Hello Again!</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">NEXT</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">这个例子输出与上一个例子完全相同的结果。但是,在这个例子中,FOR...LOOP循环从数字500开始,反向循环到1。</p>
<p ALIGN="JUSTIFY">你可以在循环中使用不同的步长。在下面的例子中,变量i每次被增加10:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">for i=1 to 500 step 10</p>
<p ALIGN="JUSTIFY">%><br>
<%=i%><br></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">next</p>
<p ALIGN="JUSTIFY">%><br>
</p>
<p ALIGN="JUSTIFY">你可以用EXIT FOR语句从一个FOR...LOOP循环退出。假定你在遍历一个数组以找到某个字符串表达式的匹配值。当你已经找到了一个匹配时,你不需要继续执行循环:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">dim myarray(10)</p>
<p ALIGN="JUSTIFY">myarray(4)=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Running
Shoes</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">for i=0 to ubound(myarray)</p>
<p ALIGN="JUSTIFY">if myarray(i)=</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">Running Shoes</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3"> then
exit for</p>
<p ALIGN="JUSTIFY">next</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">在这个例子中,如果数组中某个元素的值与表达式“Running
Shoes</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">相匹配,则立即退出FOR...NEXT循环。变量i的值等于被匹配的元素的索引值。</p>
<p ALIGN="JUSTIFY">FOR EACH...NEXT语句于FOR...NEXT语句关系密切。FOR EACH...NEXT语句只适用于对数组或集合的元素进行循环,如下面的例子所示:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">dim myarray(10)</p>
<p ALIGN="JUSTIFY">myarray(4)=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Running
Shoes</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">for each i in myarray</p>
<p ALIGN="JUSTIFY">if i=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Running
Shoes</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3"> then exit for</p>
<p ALIGN="JUSTIFY">next</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">这个例子中的脚本与上一个例子完成相同的任务。当字符串表达式得到匹配时,立即退出循环。但是,当脚本完成时,变量i的值等于“Running
Shoes</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">。</p>
<p ALIGN="JUSTIFY">与FOR...LOOP循环中不同,这里的变量i不是作为一个计数器。而是代表循环所操作的数组或集合的每个成员的值。如果你想显示一个数组的所有元素的值,你可以这样做:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">for each i in myarry</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=i%></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">next</p>
<p ALIGN="JUSTIFY">%></p>
</font><font FACE="宋体" SIZE="5"><b>
<p ALIGN="JUSTIFY">用WHILE和DO执行条件循环</p>
</b></font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">当以指定的次数执行一组语句或显示HTML代码块时,FOR...LOOP循环是有用的。但是,在许多情况下,当一个循环执行之前,你并不知道它需要执行的次数。在这些情况下,你需要使用WHILE循环或DO循环。</p>
<p ALIGN="JUSTIFY">WHILE循环当某个条件的真值保持为TRUE时,重复执行一组语句。考虑如下的例子:</p>
<p ALIGN="JUSTIFY"><%<br>
TheFuture=DATEADD(</font><font SIZE="3">“</font><font FACE="宋体" SIZE="3">s</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">,15,TIME)</p>
<p ALIGN="JUSTIFY">WHILE TIME<TheFuture</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=TIME%> : Waiting For The Future... <BR></p>
<p ALIGN="JUSTIFY"><%<br>
WEND</p>
<p ALIGN="JUSTIFY">%><br>
<B> The Future</font><font SIZE="3">’</font><font FACE="宋体" SIZE="3">s
Here!</B></p>
<p ALIGN="JUSTIFY">在这个例子中,处在WHILE和WEND之间的所有语句被重复执行,直到时间过去15秒。WHILE语句测试当时时间是否小于存储在变量TheFuture中的时间。一旦当前时间大于或等于TheFuture,则退出循环。</p>
<p ALIGN="JUSTIFY">DO循环与WHILE循环密切相关,但是更复杂。用DO循环,你可以构造当某个条件保持为真时重复执行的循环,也可以构造重复执行直到某个条件为真的循环。这里有一个例子:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">do while sentence<></font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">Hello There!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">sentence=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello
There!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=sentence%></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">loop</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">在这个例子中,当变量sentence的值不等于字符串</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello There!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">时,处在DO语句和LOOP语句之间的语句被重复执行。因为在循环体你变量sentence被赋了值</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello There!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">,WHILE条件只在第一次迭代时为TRUE。换句话说,这个DO循环体内的语句只执行一次,字符串</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello There!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">只被在屏幕上打印一次。</p>
<p ALIGN="JUSTIFY">在这个例子中,当某个条件为真时则执行循环。你也可以构造一个一直执行直到某个条件为真的循环,如下例所示:</p>
<p ALIGN="JUSTIFY"><%<br>
do until sentence=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello
There!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">sentence=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello
There!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=sentence%></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">loop</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">这个脚本于上一个完成同样的功能。DO循环只执行一次。一旦变量sentence的值等于</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello There!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">就不再执行循环。这个循环只执行一次,字符串</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello There!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">只在屏幕上打印一次。</p>
<p ALIGN="JUSTIFY">如果你愿意,你可以把表达式WHILE或UNTIL转移到循环的底部,象这样:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">do</p>
<p ALIGN="JUSTIFY">sentence=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">Hello
There!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">loop until sentence=</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">Hello There!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">使用DO循环时,你可以用EXIT DO语句退出循环。考虑如下的循环:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">do until 1<>1</p>
<p ALIGN="JUSTIFY">exclaim=exclaim&</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">!</font><font SIZE="3">”</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">if exclaim=</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3">!!!!!</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3"> then exit do</p>
<p ALIGN="JUSTIFY">loop</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=exclaim%></p>
<p ALIGN="JUSTIFY">在这个例子中,DO循环一直执行到1等于1,换句话说,它永远循环下去。然而,在每一次循环中,变量exclaim被追加一个感叹号。当变量exclaim等于字符串</font><font
SIZE="3">”</font><font FACE="宋体" SIZE="3">!!!!!</font><font SIZE="3">”</font><font
FACE="宋体" SIZE="3">时,exit do语句强制退出循环。</p>
<p ALIGN="JUSTIFY">当用WHILE或DO构造循环时,小心不要构造死循环。如果你偶尔构造了一个死循环,不要担心。经过一定时间之后(通常是90秒),脚本会自动结束。</p>
<p ALIGN="JUSTIFY">注意</p>
<p ALIGN="JUSTIFY">你可以使用Sever对象的ScriptTimeOut属性来控制一个脚本执行多长时间后就算超时。请参见第14章,“使用单个Active
Sever Page。”</p>
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -