如果有人告訴你學習 ASP 不需要任何編程知識,那么他錯了;如果我告訴你學習 ASP 必須掌握一門編程語言,那么我錯了。ASP 動態(tài)服務器頁面環(huán)境的特點就在于它是通過一種或幾種腳本語言而寫成的,腳本語言可以看作是編程語言的簡化版,它易于學習和掌握,這給廣大動態(tài)網站的設計者們提供了相當大的便利??梢赃@么說 : 腳本語言運用的得當與否直接關系到 ASP 應用程序的優(yōu)與劣。繼上一篇我們學習了腳本語言 VBScript 的函數(shù)和條件語句后,今天我們繼續(xù)來看看 VBScript 中的循環(huán)語句。
循環(huán)語句的作用就是重復執(zhí)行程序代碼,循環(huán)可分為三類:一類在條件變?yōu)椤凹佟敝爸貜蛨?zhí)行語句,一類在條件變?yōu)椤罢妗敝爸貜蛨?zhí)行語句,另一類按照指定的次數(shù)重復執(zhí)行語句。在 VBScript 中可使用下列循環(huán)語句:
Do...Loop: 當(或直到)條件為“真”時循環(huán)。
While...Wend: 當條件為“真”時循環(huán)。
For...Next: 指定循環(huán)次數(shù),使用計數(shù)器重復運行語句。
For Each...Next: 對于集合中的每項或數(shù)組中的每個元素,重復執(zhí)行一組語句。
我們先來看看 Do...Loop,它是可以多次(次數(shù)不定)運行語句塊。當條件為“真”時或條件變?yōu)椤罢妗敝埃貜蛨?zhí)行語句塊。請看下例:
html>
head>
title>DoLoop.asp/title>
body bgcolor="#FFFFFF">/head>
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 程序運用循環(huán)語句制作了一張銷售結算記錄表,將以上代碼剪貼至記事簿保存為 DoLoop.asp,并在瀏覽器中以 HTTP 方式進行瀏覽,根據(jù)當前的月份的不同。
我們來分析一下此段程序,我們的目的是要根據(jù)當前的月份打印一張表格,首先我們建立一個計數(shù)器“count”并將其值設為 1,然后我們用函數(shù) month() 和 now() 得到當前的月份,最后建立循環(huán),當 count 的值小于當前月份的值加 1 的時候,即顯示月份值及一條橫線并將 count 的值加 1,循環(huán)語句重復執(zhí)行直到以上條件為假時退出循環(huán)。其中如果 count 大于 13 則用 exit do 立即退出循環(huán)。
Do Loop 語句還可以使用以下語法:
Do
[statements][Exit Do]
[statements]Loop [{While Until} condition]
While...Wend 語句是為那些熟悉其用法的用戶提供的。但是由于 While...Wend 缺少靈活性,所以建議最好使用 Do...Loop 語句。下面我們來看看 For Next 語句。For...Next 語句用于將語句塊運行指定的次數(shù),在循環(huán)中使用計數(shù)器變量,該變量的值隨每一次循環(huán)增加或減少。
下面的示例將過程 MyProc 重復執(zhí)行 50 次。For 語句指定計數(shù)器變量 x 及其起始值與終止值。Next 語句使計數(shù)器變量每次加 1。
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
MyProc
Next
End Sub
關鍵字 Step 用于指定計數(shù)器變量每次增加或減少的值。在下面的示例中,計數(shù)器變量 j 每次加 2。循環(huán)結束后,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
要使計數(shù)器變量遞減,可將 Step 設為負值。此時計數(shù)器變量的終止值必須小于起始值。在下面的示例中,計數(shù)器變量 myNum 每次減 2。循環(huán)結束后,total 的值為 16、14、12、10、8、6、4 和 2 的總和?! ?nbsp;Sub NewTotal()
Dim myNum, total
For myNum = 16 To 2 Step -2
total = total + myNum
Next
MsgBox " 總和為 " total "。"
End Sub
Exit For 語句用于在計數(shù)器達到其終止值之前退出 For...Next 語句。因為通常只是在某些特殊情況下(例如在發(fā)生錯誤時)要退出循環(huán),所以可以在 If...Then...Else 語句的 True 語句塊中使用 Exit For 語句。如果條件為 False,循環(huán)將照常運行。
最后,讓我們來看看 For Each...Next 語句 ,For Each...Next 循環(huán)與 For...Next 循環(huán)類似。For Each...Next 不是將語句運行指定的次數(shù),而是對于數(shù)組中的每個元素或對象集合中的每一項重復一組語句。這在不知道集合中元素的數(shù)目時非常有用。它的語法如下: For Each element In group
[statements]
[Exit For]
[statements]Next [element]
如果 group 中有至少一個元素,就會進入 For Each 塊執(zhí)行。一旦進入循環(huán),便首先對 group 中第一個元素執(zhí)行循環(huán)中的所有語句。只要 group 中還有其他的元素,就會對每個元素執(zhí)行循環(huán)中的語句。當 group 中沒有其他元素時退出循環(huán),然后從 Next 語句之后的語句繼續(xù)執(zhí)行。
至此,我們已經完成了對腳本語言 VBScript 所有的基本知識的學習,但是僅憑閱讀現(xiàn)有的這幾篇文章你是無法熟練運用 VBScript 的,你必須通過不斷的實踐來提高自己的等級。當然,如果你熟悉 C,你也可以選擇javascript 來作為 ASP 應用程序的腳本語言。不知大家有沒有發(fā)現(xiàn) ASP 程序的調試比較困難,因為沒有什么現(xiàn)成的工具,在這里我向大家簡要介紹一下 Microsoft Script Debugger,我們可以運用它來進行一定量的程序調試工作。
IIS4.0 所包括的 Microsoft Script Debugger(Script 偵錯工具),提供腳本程序的偵錯功能。您可以使用 Microsoft Script 偵錯工具來進行對使用 VBScript、JScript 編寫的腳本程序,以及 Java applets、beans 和 ActiveX 組件的偵錯工作。
有的腳本程序在用戶端瀏覽器執(zhí)行,有的腳本程序(% … %> 中的部份)在服務器端執(zhí)行。Microsoft Script Debugger,可以偵錯用戶端執(zhí)行的腳本程序以及服務器端執(zhí)行腳本程序?! ?nbsp;在用戶端瀏覽器執(zhí)行的腳本程序是在用戶端的瀏覽器當中執(zhí)行,包括在標準 HTML 代碼中的 VBScript、Jscript 部份。在瀏覽器載入此 HTML 代碼或譬如按下按鈕觸發(fā)事件時,將執(zhí)行此包括腳本程序的 HTML 代碼。用戶端瀏覽器執(zhí)行的腳本程序,主要用于對 HTML 表單輸入的基本檢查等功能。
在服務器端執(zhí)行的腳本程序是在 IIS 服務器端執(zhí)行,包括在 .asp 程序中。先在 IIS 服務器上執(zhí)行,執(zhí)行結果產生標準的 HTML 代碼,再傳送到用戶端瀏覽器。服務器端執(zhí)行的腳本程序,主要用于多個網頁之間的連結,HTML 表單輸入的處理,以及存取服務器上數(shù)據(jù)庫的資料等。
Microsoft Script Debugger 提供以下的除錯功能:
1、設定中斷點
2、逐步追蹤腳本程序。
3、設定書簽。
4、檢視呼叫堆疊。
5、檢視和更改變數(shù)值。
6、執(zhí)行腳本指令。