使用循环(for…next)
如果你要重复执行一句或一组语句特定的次数,你可以使用for…next循环。下面的for…next循环打印10次Hello World!
<%
for (myvar=0; myvar<10; myvar++)
%>
Hello World!
for语句包含三部分,第一部分初始化变量,在此例中,新的变量myvar的初始值是0,第二个部分判断某个条件是否为真,这个循环当myvar的值小于10时一直在执行。for语句的最后一部分自增myvar变量。
通常你有一组语句需要在for…next循环中执行,要指定一组语句执行,你要用花括号({})将这些语句包含起来。如下面所示:
<%
for (myvar=0; myvar<10; myvar++)
{
%>
<BR> Hello World!
<BR> How are you today?
<%
}
%>
在此例中,一组HTML语句在浏览器上重复显示10次,注意在这个脚本末尾结束for…next循环的花括号}。
与for…next语句最接近的语句是for…in语句,你可以使用for…in语句来逐个访问数组或对象中的每一个元素。下面的例子说明了这个语句的用法:
<%
myarray=new Array(“John”,“Paul”,“George”,“Ringo”);
for (myvar in myarray)
{
%>
<%=myarray[myvar]%>
<%
}
%>
这个脚本输出名为myarray的数组中的所有元素的值,对数组中的每个元素,都要执行一遍循环体中的语句。
使用while循环
如果当某一特定条件为真时你要执行一条或一组语句,那么你可以使用while循环。while循环只有当条件为真时才执行,来看下面的脚本:
<%
function ThePresent()
{
var ThePresentTime=new Date();
return ThePresentTime.getTime();
}
TheFutureTime=new Date();
TheFutureTime.setSeconds(TheFutureTime.getSeconds()+15);
TheFuture=TheFutureTime.getTime();
while (ThePresent()<TheFuture)
{
%>
<BR> Waiting for the future…
<%
}
%>
这个脚本反复在屏幕上显示文本Waiting for the future…达15秒(见图9.4)。紧跟在while语句后的语句组不断执行直到括号中包含的条件为假时才停止。在这种情况下,当现在的时间与启动脚本的时间差在15秒之内时(使用函数不断地刷新当前时间),while循环不断执行。
如果在while语句执行之前,它的条件就是假的,那么while中包括的循环体就不会被执行。也就是说,如果while语句的条件永远都是真的,则循环就会永远地执行下去。
使用while语句时你要小心不要陷入到死循环中去,如果你不小心建立了一个死循环,也不要担心。要有耐心,在一定时间之后脚本会自动终止的(通常是90秒)。
注意
你可以使用服务器对象的ScriptTimeOut属性来控制在时间到达之前一个脚本执行多长时间。你可以从第14章“使用单个ASP”来学习怎样实现这一目的。
图9.4 Waiting for the future…