指令碼|迴圈|語句 作者:書生
在本文上兩篇中,我們學習了指令碼語言 VBScript 的變數、函數、過程和條件陳述式,本篇將繼續給大家介紹 VBScipt 的迴圈語句,並對指令碼語言在 ASP 中的應用加以總結。
如果有人告訴你學習 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]
如果 group 中有至少一個元素,就會進入 For Each 塊執行。一旦進入迴圈,便首先對 group 中第一個元素執行迴圈中的所有語句。只要 group 中還有其他的元素,就會對每個元素執行迴圈中的語句。當 group 中沒有其他元素時退出迴圈,然後從 Next 語句之後的語句繼續執行。
至此,我們已經完成了對指令碼語言 VBScript 所有的基本知識的學習,但是僅憑閱讀現有的這幾篇文章你是無法熟練運用 VBScript 的,你必須通過不斷的實踐來提高自己的等級。當然,如果你熟悉 C,你也可以選擇JavaScript 來作為 ASP 應用程式的指令碼語言。不知大家有沒有發現 ASP 程式的調試比較困難,因為沒有什麼現成的工具,在這裡我向大家簡要介紹一下 Microsoft Script Debugger,我們可以運用它來進行一定量的程式調試工作。
IIS4.0 所包括的 Microsoft Script Debugger(Script 偵錯工具),提供指令碼程式的偵錯功能。您可以使用 Microsoft Script 偵錯工具來進行對使用 VBScript、JScript 編寫的指令碼程式,以及 Java applets、beans 和 ActiveX 組件的偵錯工作。
有的指令碼程式在使用者端瀏覽器執行,有的指令碼程式(< % … %> 中的部份)在伺服器端執行。Microsoft Script Debugger,可以偵錯使用者端執行的指令碼程式以及伺服器端執行指令碼程式。 在使用者端瀏覽器執行的指令碼程式是在使用者端的瀏覽器當中執行,包括在標準 HTML 程式碼中的 VBScript、Jscript 部份。在瀏覽器載入此 HTML 程式碼或譬如按下按鈕觸發事件時,將執行此包括指令碼程式的 HTML 程式碼。使用者端瀏覽器執行的指令碼程式,主要用於對 HTML 表單輸入的基本檢查等功能。
在伺服器端執行的指令碼程式是在 IIS 伺服器端執行,包括在 .asp 程式中。先在 IIS