VBScript語言概述
在ASP中,通過使用VBscript腳本語言編寫程序代碼,可以實現主要的功能模塊。將VBscript程序嵌入到HTML中,制作出動態交互的Web頁面,VBScript是程序開發語言Visual Basic的一個子集,為ASP默認的編程語言
一、VBScript腳本語言的特點
- 語言簡單,易學易懂
- 增強客戶端功能、降低WEB服務器負荷。VBScript使得程序在將表單數據發送到服務器之前,就可以驗證表單的數據,以進行相應處理,還可以動態的創建新的WEB內容,甚至可以編寫完全在客戶端運行的程序,並可以用於擴展客戶端的功能
- 可用於ASP程序設計。ASP提供了一個服務器端的腳本環境,應用VBScript語言可編寫動態、交互、高效的應用程序。
- 多種嵌入形式。開發者可以應用免費的VBScript腳本來編寫程序。VBScript與IE瀏覽器是集成在一起的,VBScript和ActiveX空間也可以在應用程序中結合使用以實現特定的功能
二、VBScript代碼編寫格式
VBScript是VB語言的子集,他是專門為IE開發的編程語言,使用VBScript的目的是控制頁面內容的動態交互性。使用VBScript可以編寫服務器端腳本,也可以編寫客戶端腳本
1.服務器端腳本編寫格式
服務器端腳本在服務器上執行,由服務器根據腳本的執行結果生成相應的HTML界面,發送到客戶端。只有服務器端腳本才能實現真正的“動態網頁“的功能。服務器端腳本的執行不受瀏覽器的限制,腳本在網頁通過網絡傳送給瀏覽器之前被執行,WEB瀏覽器收到的只是標准的HTML文件
在ASP程序中,編寫服務器端腳本有兩種方法。
a.方法一:將腳本代碼放在<%...%>標識符之中

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>服務器端腳本1</title> </head> <% dim num num=1 if num <> 0 then response.Write("歡迎來到ASP編程世界") %> <body> </body> </html>
b.方法二:將腳本代碼放置在<script>...</script>標記之間

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>服務器端腳本2</title> </head> <script language="vbscript" runat="server"> dim num num=1 if num <> 0 then response.Write("歡迎來到ASP編程世界") </script> <body> </body> </html>
2.客戶端腳本編寫格式
客戶端本由瀏覽器解釋執行。由於客戶端腳本隨着HTML頁面下載到客戶端瀏覽器,在用戶本地執行,因此其執行速度明顯快於服務器端腳本。客戶端腳本常用於做簡單的客戶端驗證或實現網頁特效等。
客戶端腳本的代碼是寫在<script></script>標記之間的。可以將編寫完成的代碼塊放置在HTML文檔中的任何位置。但是通常情況下,是在代碼塊放在<Head>標記之間的,以便查看和使用
<script language="腳本語言" [event="事件名稱"] [for="對象名稱"]>
<!--
//腳本代碼
-->
</script>
language:用於指定腳本代碼使用的語言
event:用於指定腳本代碼相關聯的事件
for:用於指定腳本代碼相關聯的對象

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>客戶端腳本</title> <script language="VBSCRIPT" event="onClick" for="btn1"> MsgBox "您單擊了此按鈕" </script> </head> <body> <input name="btn1" value="單擊按鈕" type="button" id="btn1"/> </body> </html>
注意:VBScript的MsgBox函數不能在服務器端腳本中使用,因為信息框是用戶界面元素,不能在服務器端執行
三、常量與變量
常量與變量是VBScript的常見元素,本節介紹VBScript中常量、變量的聲明和賦值以及如何確定變量的作用域和存活期
1.VBscript常量
常量是具有一定含義的名稱,用於代替數值和字符串,在程序執行期間其值不會發生變化。常量可分為普通常量和符號常量。普通常量可以稱為文字常量,它不必定義就可以在程序中使用,而符號常量則要以Const語句加以聲明才能使用
a.文字常量
按照數據類型的不同,分為字符串常量、數值常量和日期時間常量
字符串常量:主要是由一對雙引號括起來的字符序列組成
數值常量:分為整形常量、長整型常量和浮點型常量。其中整形常量和長整型常量可以用十進制、十六進制和八進制三種形式表示
日期和時間常量::用一對#號括起來#2007-12-09 11:12:32#
b.符號常量
符號常量使用一個標識符表示的常量,用於代替數字和字符串,在程序執行期間其值不會發生變化。在VBScript中,可以通過關鍵字Const語句定義。分為預定義符號常量和用戶自定義常量
預定義常量:是在VBScript中建立的,並在使用之前不用定義的常量。在代碼的任意位置都可以使用此常量所表示的說明值。例如:vbCr表示回車;Empty表示沒有初始化之前的值
用戶自定義常量:通過Const語句來創建的。使用Const語句可以創建具有一定意義的字符串型或數值型常量,並賦予一個初始值。例如:Const PI=3.1415 Const OlympicsBJ=#2008-8-8#
2.變量的聲明和賦值
變量是一種使用方便的占位符,主要用於引用計算機的內存來存儲腳本運行時更改的數據類型。在VBScript中的變量不區分大小寫。
VBScript中聲明 變量有兩種方式,一種是顯式聲明,另一種是隱式聲明
顯示聲明:通過變量聲明語句來聲明變量,它可以在定義變量的時候為變量在內存中預留內存空間。聲明語句包括Dim語句、public語句和private語句。一個聲明語句可以聲明多個變量,並應用逗號將多個變量分開
① 通過Dim語句聲明變量
Dim 變量名 [,變量名]

<% dim i dim Conn,ConnStr,Rs,sqlStr dim array(10) %>
② 通過public語句聲明變量
public 變量名 [,變量名]
例如:public Standard
③ 通過Private語句聲明變量
private語句是用來聲明私有變量的,聲明的變量只能在聲明它的腳本中使用
private 變量名 [,變量名]
隱式聲明:因為在VBScript中只有一種數據類型,即遍體類型,所以在VBscript中使用一個變量前是無需聲明的,可以直接在腳本代碼中使用。當在程序運行過程中檢測到該變量時,系統會自動在內存中開辟存儲區域並登記該變量名。
為了避免隱式聲明時因寫錯變量名等一起的問題,在VBScript中提供了Option Explcit語句。強制聲明會增加代碼量,但可以提高程序的可讀性,減少出錯的機會,Option Explcit語句必須位於ASP處理命令之后、任何HTML文本或腳本命令之前。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Option Explicit %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% dim str str="sss" %> </body> </html>
3.變量的作用域和存活期
①變量的作用域:由聲明的位置決定。分為腳本級變量和過程級變量

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>區分變量的作用域</title> </head> <body> <% dim str '聲明腳本級變量 str="體育項目" '賦值 call GetResult() '調用子過程 Response.Write str '輸出變量的值 '下面定義子過程 sub GetResult() dim str '聲明過程級變量 str="網球、乒乓球、足球..." end sub %> </body> </html>
四、運算符的應用
運算符是完成操作的一系列符號。VBScript中運算符包括算數運算符、連接運算符、關系運算符、邏輯運算符等幾種類型。當表達式包含多個運算符時,將按預定順序計算每一部分,該順序稱為優先級
1.算數運算符
+:加法
-:減法
*:乘法
^:指數次方
/:相除返回浮點型結果
\:相除返回整形結果
2.連接運算符
連接運算符是將兩個字符串連接起來形成一個字符串,有+和&兩種,其中+連接兩個字符串,&可以用來連接兩種不同類型的數據

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> </head> <body> <% dim s1,s2,s3,r1,r2 s1="today " s2="is " s3=#12/25/09# r1=s1 + s2 '字符串與字符串的連接 r2=r1 & s3 '字符串與日期的連接 response.Write r2 %> </body> </html>
3.關系運算符
關系運算符用於對兩個表達式的值進行比較

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>關系運算符</title> </head> <body> <% Dim x x=100 if x <> 200 then '判斷x是否與200相等 response.Write "不相等" else response.Write "相等" end if %> </body> </html>
4.邏輯運算符
邏輯運算符通常也稱為布爾運算符,專門用於邏輯之間的運算。用於完成邏輯運算符的運算符有以下幾種
①取反 Not
②與運算 And
③或運算 Or
④異或運算 Xor:如果兩個表達式的結果同時為真或同時為假則結果為假,不然為真
⑤等價運算符 Eqv:是異或運算符取反的結果
五、函數的應用
VBScript提供了許多重要的內部函數,如字符串函數、轉換函數、日期和時間函數、判斷函數、數學函數以及其它函數的應用
1.字符串處理
函數 | 說明 |
Asc(str) | 返回第一個字符的ASCII字符代碼 |
InStr(start,str1,str2) | 返回從字符串str1的start位置查找str2第一次出現的位置,str1和str2同時返回0 |
Lcase(str) | 將字符串中的所有字符轉換為小寫 |
Left(str,len) | 返回字符串str最左側長度為len的字符串 |
Len(str) | 返回字符串的長度 |
Ltrim(str) | 去除str左側的空格 |
Mid(str,start,len) | 返回從str的第start個字符開始的len個字符 |
Right(str,len) | 返回字符串右側的len個字符 |
Rtrim(str) | 去掉字符串右邊的空格 |
StrComp(str1,str2,[method]) | 使用method方式比較兩個字符,其中0表示二進制方式比較,1表示文字方式比較。比較的結果返回為1、-1、0 |
InStrRev(str1,str2) | 返回字符串str1中從尾部開始搜索某字符串str2第一次出現的位置 |
Trim(str) | 去除字符串兩端的空格 |
Ucase(str) | 將字符串str轉換為大寫 |

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>取字符串的子串</title> <style type="text/css"> <!-- .STYLE1 { color: #3333CC; font-style: italic; font-weight: bold; } --> </style> </head> <body> <span class="STYLE1">代碼要求:取出”2015-12-14 15:05:03“中的年月日部分: </span><br> <% dim r,len,str r=#2015-12-14 15:05:03# len=InStr(1,r," ") str=Left(r,len) response.Write str %> </body> </html>
2.數據轉換
轉換函數用於將一種類型的數據轉換為其它類型的數據
函數 | 說明 |
CBool(expression) | 將expression轉換為布爾類型 |
CByte(expression) | 將expression轉換為單字節類型 |
CDate(expression) | 將expression轉換為日期類型 |
CDbl(expression) | 將expression轉換成雙精度類型 |
Chr(expression) | 將expression所表示的ASCII轉換為對應字符串 |
CInt(expression) | 將expression轉換成整數類型 |
CLng(expression) | 將expression轉換成長整數類型 |
CSng(expression) | 將expression轉換成單精度類型 |
CStr(expression) | 將expression 轉換成字符串類型 |
Hex(expression) | 將expression 轉換成十六進制類型 |
Int(expression) | 將expression 向下取整 |
Fix(expression) | 將expression 向上取整 |
Oct(expression) | 將expression 轉換成八進制類型 |
如例:將字符串轉換為整形

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>將字符串轉為整形</title> </head> <body> <% dim str,num str="100" num=Cint(str)+2 response.Write num %> </body> </html>
3.日期時間數據的處理
日期時間函數用於對日期、時間數據進行處理
函數 | 說明 |
Date() | 返回系統當前日期 |
DateSerial(year,moth,day) | 返回日期子類型 |
DateVlaue(String) | 將字符串轉換為日期型 |
Day(Date) | 返回給定日期中的天 |
Hour(Time) | 返回給定時間中的小時 |
Minute(Time) | 返回給定時間中的分鍾 |
Second(Time) | 返回給定時間中的秒 |
Now() | 返回當前系統的日期和時間 |
Time() | 返回當前系統的時間 |
TimeVlaue(String) | 將字符串轉換為時間型 |
Year(Date) | 返回當前日期的年 |
Month(Date) | 返回當前日期的月份 |
WeekDay(Date) | 返回一周中的某一天 |
DateDiff("str",d1,d2) | 計算兩個日期之間的間隔,str為yyyy表示計算年間隔,為m表示計算月間隔, 為d表示日間隔,為ww表示星期間隔,為h表示計算小時間隔,為s表示計算秒間隔 |
DateAdd("str",num,d1) | 返回日期d1加上數字num后的日期,其中num的單位根據str的值而不同 |

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>得到計算的時</title> </head> <body> <script language="vbscript" runat="server"> response.write("今天是星期" & WeekDay(Date)-1 & "<br>") response.write("兩年前的今天是" & DateAdd("yyyy",-2,Date()) & "<br>") response.write("距離2018-05-01還有:" & DateDiff("d",Date(),#2018-05-01#) & "天") </script> </body> </html>
4.數據類型的判斷
函數 | 說明 |
IsArray(Var) | 判斷var是否為一個數組 |
IsDate(Var) | 判斷var是否可以轉換為日期類型 |
IsEmpty(Var) | 判斷var是否已經被初始化 |
IsNull(Var) | 判斷var是否為空 |
IsNumber(Var) | 判斷var是否為數字 |
IsObject(Var) | 判斷var是否為對象 |
VarType(Var) | 判斷var的類型,返回0表示空,2表示整數,7表示日期,8表示字符串,11表示布爾值,8204表示數組 |
數據類型判斷函數應用比較廣泛,在使用數據之前判斷此數據的類型,有助於提高程序運行的有效性

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>判斷函數應用</title> </head> <body> <% dim num num=1 if not isempty(num) then response.Write "不為空" else response.Write "空值" end if %> </body> </html>
5.數學函數的應用
函數 | 說明 |
Rnd | 用於返回一個隨機數 |
Randomize | 初始化隨機數生成器 |
Int | 返回數字的整數部分 |
Fix | 返回數字的整數部分 |
Abs | 返回數字的絕對值 |
Exp | 返回e的冪次方 |
Log | 返回數值的自然對數 |
Sqr | 返回數值的平方根 |
Round | 返回按指定位數進行四舍五入對的值 |
代碼:生成隨機數

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>生成隨機數</title> </head> <body> <% dim i,r,str for i=1 to 3 Randomize r=Int((6*rnd)+1) str=str&r next response.Write "生成隨機數為:" & str %> </body> </html>
六、數組的創建與應用
數組是有序數據的集合。數組中的每一個元素都屬於同一數據類型,用一個統一的數組名和下標可以唯一確定數組中的元素,下標是放在緊跟在數組名之后的括號中。數組的最大維數為60
1.創建數組
在VBScript中有固定數組和動態數組兩種
①固定數組:數組大小在程序運行時不可改變的數組。數組在使用前必須先聲明
dim array(i)
在VBScript中,數組的下標是從0開始計數的,數組的長度為i+1
例如:
dim ary(3) '該數組的長度是4而不是3
dim db_array(5,10) '聲明一個6*11的二維數組
聲明數組后就可以通過下標對數組進行指定賦值
例如:
dim ary(3)
ary(0)="demo"
②動態數組:聲明數組時也可以不指明它的下標,這樣的數組叫做變長數組
例如:
dim ary()
雖然動態數組聲明時無須指明下標,但在使用它之前必須使用ReDim語句確定數組的維數
dim array()
Redim array(i)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用動態數組</title> </head> <body> <% dim i dim MyArray() '聲明動態數組 Redim MyArray(3) '定義長度為4 for i=0 to 3 MyArray(i)=2*i next response.Write "數組MyArray中元素為:<br>" for i=0 to 3 response.Write MyArray(i) & "<br>" next %> </body> </html>
使用Redim語句可以多次改變元素下標,即重新動態調整動態數組大小的次數是沒有限制的,但是使用Redim語句重新聲明數組后,原有數組的數值將會全部清空,如果希望保留原有下標數值,則可以I使用Preserve關鍵字
例如:
dim ary()
Redim ary(5)
......
Redim Preserve ary(Ubount(ary)+1)
以上代碼將數組長度加1,但數組中原有的元素值不變。Ubound()函數返回原有數組的最大索引
2.應用數組函數
數組函數用於對數組的操作,主要有LBound函數、UBound函數、Split函數和Erase函數
①LBound函數:返回指定數組維的最小可用下標
LBound(函數名稱,[,維數])
維數是指要返回指定維下界的整數,如果為1則表示第一維,為2表示第二維...如果省略維數,則默認維數為1
例如:代碼結果為0

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用動態數組</title> </head> <body> <% dim ary(5,10) response.Write(LBound(ary,2)) %> </body> </html>
②UBound函數:返回指定數組維的最大可用下標
UBound(函數名稱,[,維數])
③Split函數:返回基於0的一維數組,其中包含指定數組的子字符串。
Split(expression [,分隔符 [,count [,比較類型]]])
expression:表示需要處理的字符串,包含子字符串和分隔符。如果表達式長度為零,則返回空數組
count:可選項,表示被返回的子字符串數目,如果為-1,則返回所有子字符串。
比較類型:為可選項,用於指示在計算子字符串時使用的比較類型的數值,0表示二進制比較,1表示文本比較,2表示基於數據庫中包含信息的比較
例如:讀取字符串中以符號/分割的各子字符串

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用動態數組</title> </head> <body> <% dim str,str_sub,i str="ASP程序開發/VB程序開發/.NET程序開發" str_sub=Split(str,"/") for i=0 to Ubound(str_sub) response.Write(i+1 & ". " & str_sub(i) & "<br>") next %> </body> </html>
④Erase函數:重新初始化固定大小數組的元素,並釋放數組的存儲空間。
Erase array
七、程序控制語句
1.選擇語句
①if...then...end if
②if...then...else...end if
③select case 變量或表達式
case:結果1
命令序列
...
end select
2.循環語句
① do...loop語句分為兩種
循環條件出現在語句的開始部分
do while 條件表達式
循環體
Loop
或
do util 條件表達式
循環體
Loop
循環條件出現在語句的結尾部分
do
循環體
loop while 條件表達式
或
do
循環體
loop util 條件表達式
其中while和util關鍵字的作用相反,while是條件為true時執行循環體,而util是條件為true時退出循環體
在do...loop語句中,當條件表達式在前時,表示在循環條件為真時才能執行循環體,而表達式在后時,至少會執行一次循環體
在do...loop語句中,強制退出循環使用exit do,for語句中使用exit for
例如:應用do...loop計算多個數字的和

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>do loop</title> 7 </head> 8 <body> 9 <% 10 dim num,sun 11 num=0 12 sum=0 13 do until num>50 14 num=num+1 15 sum=sum+num 16 loop 17 response.Write("求和得到的結果是: " & sum) 18 %> 19 </body> 20 </html>
②while...wend循環控制語句 :當指定的條件為true時執行一系列的語句,該語句與do...loop循環語句類似
while condition
[statement]
wend
condition:數值或字符串表達式,其計算結果為true或false。
③for...next循環控制語句:for...next語句是一種強制性的循環語句
for count=start to end [step number]
statement
[exit for]
Next
④ for each ...next循環控制語句:主要用於數組或集合中的每個元素而重復執行的語句,特別是在不知道集合長度的時候是不錯的選擇
for each 元素 in 集合或數組
循環體
[exit for]
next
⑤exit退出循環語句:主要用於退出,do...loop、for...next、function、sub代碼塊,其對應的退出語句分別為exit do、exit for、exit function、exit sub
八、過程的創建與調用
過程是一組能執行指定任務的腳本命令,在VBScript中,過程分為兩種,分為Sub過程和Function過程,兩者的區別在於sub沒有返回值,而function過程有返回值
1.調用sub過程
sub過程指包含在sub和end sub之間的VBScript語句,該過程執行操作但是沒有返回值,sub過程可以使用參數(參數可以為調用過程傳遞的常量、變量或表達式)
聲明一個過程的語法格式如下:
Sub 子程序名([參數1,參數2])
......
end sub
在asp頁面中,調用sub有以下方式
①使用call語句調用sub過程
call 子程序名(參數1,參數2) ‘使用call語句可以將控制權傳遞給sub過程
②直接調用sub過程
子程序名 參數1,參數2...
例如:自定義sub過程判斷閏年

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>判斷閏年</title> 7 </head> 8 <body> 9 <% 10 sub y(num) 11 if (num mod 4=0) and (num mod 100 <> 0) then 12 response.Write(num & "年:是閏年<br>") 13 else 14 response.Write(num & "年:不是閏年<br>") 15 end if 16 end sub 17 call y(2000) 18 y 2020 19 %> 20 </body> 21 </html>
2.調用function過程
Function過程是包含在Function和end Function之間的一組VBScript語句,Function通過過程名返回一個值,這個值是在過程的語句中賦值給過程名的。Function返回值的類型總是Varian
Function過程的語法格式如下:
[public | private] Function name ([arglist])
[statements]
[name=expression]
[exit Function]
[Statemtns]
[name=expression]
end function
function過程各參數說明:
參數 | 說明 |
public | 表示Function過程可以被腳本中的所有其他過程訪問 |
private | 表示Function過程只能被聲明它的腳本中的過程訪問 |
name | 過程名稱 |
arglist | 參數列表 |
statements | 主體中執行的語句組 |
expression | 常量、變量或表達式 |
Function過程的調用方法和sub過程的調用方法相同。當Function過程沒有返回值的時候可以使用call來調用過程;當Function過程有返回值時,使用過程名來調用過程
例如:定義Function過程限制標題顯示的長度

1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6 <title>function</title> 7 </head> 8 <body> 9 <% 10 function title__(tit) 11 if(len(tit)>20) then 12 title__=left(tit,20)&"..." 13 else 14 title__=tit 15 end if 16 end function 17 dim str 18 str = "春之頌 大型電影交響音樂會將於2018年4月18日19:30 在國家大劇院盛裝上演" 19 response.Write "原標題名稱為:"&str&"<br>" 20 response.Write "修正后的標題為:"&title__(str) 21 %> 22 </body> 23 </html>