ASP指令碼迴圈語句詳細教學
ASP指令碼迴圈語句詳細教學
ASP 動態伺服器頁面環境的特點就在於它是透過一種或幾種指令碼語言而寫成的,指令碼語言可以看作是程式語言的簡化版,它易於學習和掌握,這給廣大動態網站的設計者們提供了相當大的便利。可以這麼說 : 指令碼語言運用的得當與否直接關係到 ASP 應用程式的優與劣。繼上一篇我們學習了指令碼語言 VBScript 的函式和條件語句後,今天我們繼續來看看 VBScript 中的迴圈語句。
迴圈語句的作用就是重複執行程式程式碼,迴圈可分為三類:一類在條件變為“假”之前重複執行語句,一類在條件變為“真”之前重複執行語句,另一類按照指定的次數重複執行語句。在 VBScript 中可使用下列迴圈語句:
Do...Loop: 當(或直到)條件為“真”時迴圈。
While...Wend: 當條件為“真”時迴圈。
For...Next: 指定迴圈次數,使用計數器重複執行語句。
For Each...Next: 對於集合中的每項或陣列中的每個元素,重複執行一組語句。
我們先來看看 Do...Loop,它是可以多次(次數不定)執行語句塊。當條件為“真”時或條件變為“真”之前,重複執行語句塊。請看下例: < html>< head>
< title>DoLoop.asp< /title>< body bgcolor="#FFFFFF">< /head>< p>< /p>
< p>請將今年到本月為止的.每個月份的銷售結算記錄填寫在本頁之上。< P>
< %
counter = 1
thismonth = month(now())
Do while counter < thismonth + 1
response.write " " & counter & " 月份 : "
response.write "______________________________" & "< BR>< br>"
If counter >13 then
exit do
end if
counter = counter+1
Loop
%>
< hr>< /body>< /html>
這段 ASP 程式運用迴圈語句製作了一張銷售結算記錄表,將以上程式碼剪貼至記事簿儲存為 DoLoop.asp,並在瀏覽器中以 HTTP 方式進行瀏覽,根據當前的月份的不同,你將看到如下圖的結果。
我們來分析一下此段程式,我們的目的是要根據當前的月份列印一張表格,首先我們建立一個計數器“count”並將其值設為 1,然後我們用函式 month() 和 now() 得到當前的月份,最後建立迴圈,當 count 的值小於當前月份的值加 1 的時候,即顯示月份值及一條橫線並將 count 的值加 1,迴圈語句重複執行直到以上條件為假時退出迴圈。其中如果 count 大於 13 則用 exit do 立即退出迴圈。
Do Loop 語句還可以使用以下語法:
Do
[statements][Exit Do]
[statements]Loop [{While | Until} condition]
While...Wend 語句是為那些熟悉其用法的使用者提供的。但是由於 While...Wend 缺少靈活性,所以建議最好使用 Do...Loop 語句。下面我們來看看 For Next 語句。For...Next 語句用於將語句塊執行指定的次數,在迴圈中使用計數器變數,該變數的值隨每一次迴圈增加或減少。
下面的示例將過程 MyProc 重複執行 50 次。For 語句指定計數器變數 x 及其起始值與終止值。Next 語句使計數器變數每次加 1。 Sub DoMyProc50Times()
Dim x
For x = 1 To 50
MyProc
Next
End Sub
關鍵字 Step 用於指定計數器變數每次增加或減少的值。在下面的示例中,計數器變數 j 每次加 2。迴圈結束後,total 的值為 2、4、6、8 和 10 的總和。
Sub TwosTotal()
Dim j, total
For j = 2 To 10 Step 2
total = total + j
Next
MsgBox " 總和為 " & total & "。"
End Sub
要使計數器變數遞減,可將 Step 設為負值。此時計數器變數的終止值必須小於起始值。在下面的示例中,計數器變數 myNum 每次減 2。迴圈結束後,total 的值為 16、14、12、10、8、6、4 和 2 的總和。 Sub NewTotal()
Dim myNum, total
For myNum = 16 To 2 Step -2
total = total + myNum
Next
MsgBox " 總和為 " & total & "。"
End Sub
Exit For 語句用於在計數器達到其終止值之前退出 For...Next 語句。因為通常只是在某些特殊情況下(例如在發生錯誤時)要退出迴圈,所以可以在 If...Then...Else 語句的 True 語句塊中使用 Exit For 語句。如果條件為 False,迴圈將照常執行。
最後,讓我們來看看 For Each...Next 語句 ,For Each...Next 迴圈與 For...Next 迴圈類似。For Each...Next 不是將語句執行指定的次數,而是對於陣列中的每個元素或物件集合中的每一項重複一組語句。這在不知道集合中元素的數目時非常有用。它的語法如下: For Each element In group
[statements]
[Exit For]
[statements]Next [element]