
- VBScript 教程
- VBScript - 首頁
- VBScript - 概述
- VBScript - 語法
- VBScript - 啟用
- VBScript - 位置
- VBScript - 變數
- VBScript - 常量
- VBScript - 運算子
- VBScript - 決策
- VBScript - 迴圈
- VBScript - 事件
- VBScript - Cookie
- VBScript - 數字
- VBScript - 字串
- VBScript - 陣列
- VBScript - 日期
- VBScript 高階
- VBScript - 過程
- VBScript - 對話方塊
- VBScript - 面向物件
- VBScript - 正則表示式
- VBScript - 錯誤處理
- VBScript - 其他語句
- VBScript 有用資源
- VBScript - 問答
- VBScript 快速指南
- VBScript - 有用資源
- VBScript - 討論
VBScript 快速指南
VBScript - 概述
VBScript 代表Visual Basic Scripting,它是 Visual Basic for Applications (VBA) 的一個子集。VBA 是微軟的產品,不僅包含在其他微軟產品中,如 MS Project 和 MS Office,也包含在第三方工具中,如 AUTO CAD。
VBScript 的特性
VBScript 是一種輕量級的指令碼語言,它具有極快的直譯器。
VBScript 在大多數情況下不區分大小寫。它具有非常簡單的語法,易於學習和實現。
與 C++ 或 Java 不同,VBScript 是一種基於物件的指令碼語言,而不是面向物件的程式語言。
它使用元件物件模型(COM)來訪問其執行環境中的元素。
VBScript 只有在其宿主環境中執行時才能成功執行,例如 Internet Explorer (IE)、Internet Information Services (IIS) 和 Windows Scripting Host (WSH)
VBScript – 版本歷史和用途
VBScript 最早由微軟於 1996 年推出,其第一個版本是 1.0。當前穩定的 VBScript 版本是 5.8,它作為 IE8 或 Windows 7 的一部分提供。VBScript 的使用領域很多,並不限於以下列表。
VBScript 用作流行的自動化測試工具之一——Quick Test Professional(簡稱QTP)的指令碼語言。
Windows Scripting Host,主要由 Windows 系統管理員用於自動化 Windows 桌面。
Active Server Pages (ASP),一個用於建立動態網頁的伺服器端指令碼環境,它使用 VBScript 或 JavaScript。
VBScript 用於 Microsoft Internet Explorer 中的客戶端指令碼。
Microsoft Outlook 表單通常執行在 VBScript 上;但是,應用程式級程式設計依賴於 VBA(Outlook 2000 及以後版本)。
缺點
VBScript 僅被 IE 瀏覽器使用。其他瀏覽器,如 Chrome、Firefox,不支援 VBScript。因此,JavaScript 比 VBScript 更受歡迎。
VBScript 的命令列支援有限。
由於預設情況下沒有可用的開發環境,因此除錯很困難。
VBScript 的現狀?
當前版本的 VBScript 是 5.8,隨著最近 .NET framework 的發展,微軟已決定在 ASP.NET 中為 Web 開發提供 VBScript 的未來支援。因此,將不會有更多的新版本的 VBScript 引擎,但所有缺陷修復和安全問題都由微軟持續工程團隊處理。但是,VBScript 引擎將預設作為所有 Microsoft Windows 和 IIS 的一部分提供。
VBScript - 語法
你的第一個 VBScript
讓我們編寫一個 VBScript 來列印“Hello World”。
<html> <body> <script language = "vbscript" type = "text/vbscript"> document.write("Hello World!") </script> </body> </html>
在上面的示例中,我們呼叫了一個函式 `document.write`,它將字串寫入 HTML 文件。此函式可用於寫入文字、HTML 或兩者。
Hello World!
空格和換行符
VBScript 忽略出現在 VBScript 程式中的空格、製表符和換行符。可以在程式中隨意使用空格、製表符和換行符,因此可以自由地以整潔一致的方式格式化和縮排程式,使程式碼易於閱讀和理解。
格式化
VBScript 基於微軟的 Visual Basic。與 JavaScript 不同,它不使用分號等語句終止符來終止特定語句。
單行語法
當需要在單行中編寫兩行或多行 VBScript 時,使用冒號。因此,在 VBScript 中,冒號充當行分隔符。
<script language = "vbscript" type = "text/vbscript"> var1 = 10 : var2 = 20 </script>
多行語法
當 VBScript 中的語句很長,並且使用者希望將其分成多行時,使用者必須使用下劃線“_”。這提高了程式碼的可讀性。以下示例說明了如何使用多行。
<script language = "vbscript" type = "text/vbscript"> var1 = 10 var2 = 20 Sum = var1 + var2 document.write("The Sum of two numbers"&_"var1 and var2 is " & Sum) </script>
保留字
以下列表顯示了 VBScript 中的保留字。這些保留字不應作為常量、變數或任何其他識別符號名稱使用。
Loop | LSet | Me |
Mod | New | 下一頁 |
Not | Nothing | Null |
On | Option | Optional |
Or | ParamArray | Preserve |
Private | Public | RaiseEvent |
ReDim | Rem | Resume |
RSet | Select | Set |
Shared | Single | Static |
Stop | Sub | Then |
To | True | Type |
And | As | Boolean |
ByRef | Byte | ByVal |
Call | Case | Class |
Const | Currency | Debug |
Dim | Do | Double |
Each | Else | ElseIf |
Empty | End | EndIf |
Enum | Eqv | Event |
Exit | False | For |
Function | Get | GoTo |
If | Imp | Implements |
In | Integer | Is |
Let | Like | Long |
TypeOf | Until | Variant |
Wend | While | With |
Xor | Eval | Execute |
Msgbox | Erase | ExecuteGlobal |
Option Explicit | Randomize | SendKeys |
大小寫敏感性
VBScript 是一種不區分大小寫的語言。這意味著語言關鍵字、變數、函式名稱和任何其他識別符號不需要使用一致的大寫字母來鍵入。因此,識別符號 `int_counter`、`INT_Counter` 和 `INT_COUNTER` 在 VBScript 中具有相同的含義。
VBScript 中的註釋
註釋用於記錄程式邏輯和使用者資訊,其他程式設計師將來可以無縫地處理相同的程式碼。它可以包含諸如“由誰開發”、“由誰修改”之類的資訊,也可以包含合併的邏輯。直譯器在執行時會忽略註釋。VBScript 中的註釋用兩種方法表示。
1. 以單引號 (`) 開頭的任何語句都被視為註釋。
以下是一個例子:
<script language = "vbscript" type = "text/vbscript"> <!— ' This Script is invoked after successful login ' Written by : TutorialsPoint ' Return Value : True / False //- > </script>
2. 以關鍵字“REM”開頭的任何語句。
以下是一個例子:
<script language = "vbscript" type = "text/vbscript"> <!— REM This Script is written to Validate the Entered Input REM Modified by : Tutorials point/user2 //- > </script>
在瀏覽器中啟用 VBScript
並非所有現代瀏覽器都支援 VBScript。只有微軟的 Internet Explorer 支援 VBScript,而其他瀏覽器(Firefox 和 Chrome)只支援 JavaScript。因此,開發人員通常更喜歡 JavaScript 而不是 VBScript。
儘管 Internet Explorer (IE) 支援 VBScript,但您可能需要手動啟用或停用此功能。本教程將使您瞭解如何在 Internet Explorer 中啟用和停用 VBScript 支援的過程。
Internet Explorer 中的 VBScript
以下是關於如何在 Internet Explorer 中啟用或停用 VBScript 的簡單步驟:
從選單中選擇“工具”→“Internet 選項”。
從對話方塊中選擇“安全”選項卡。
單擊“自定義級別”按鈕。
向下滾動,直到找到“指令碼”選項。
在“活動指令碼”下選擇“啟用”單選按鈕。
最後單擊“確定”並退出。
要在 Internet Explorer 中停用 VBScript 支援,您需要在活動指令碼下選擇停用單選按鈕。
VBScript - 位置
VBScript 在 HTML 檔案中的位置
在 HTML 文件中的任何位置包含 VBScript 程式碼都具有靈活性。但在 HTML 檔案中包含 VBScript 的最優方法如下:
在`
…`部分中的指令碼。在`
…`部分中的指令碼。在`
…`和`…`部分中的指令碼。在外部檔案中編寫指令碼,然後在`
…`部分中包含。
在下一節中,我們將看到如何以不同的方式放置 VBScript:
在`…`部分中的 VBScript
如果希望在某些事件(例如使用者單擊某個位置)上執行指令碼,則將該指令碼放在 head 部分中,如下所示:
<html> <head> <script type = "text/Vbscript"> <!-- Function sayHello() Msgbox("Hello World") End Function //--> </script> </head> <body> <input type = "button" onclick = "sayHello()" value = "Say Hello" /> </body> </html>
它將產生以下結果:一個名為 SayHello 的按鈕。單擊按鈕後,將向用戶顯示一個包含訊息“Hello World”的訊息框。
在`…`部分中的 VBScript
如果需要在頁面載入時執行指令碼,以便指令碼在頁面中生成內容,則指令碼位於文件的`
`部分。在這種情況下,不會使用 VBScript 定義任何函式:<html> <head> </head> <body> <script type = "text/vbscript"> <!-- document.write("Hello World") //--> </script> <p>This is web page body </p> </body> </html>
這將產生以下結果:
Hello World This is web page body
在``和``部分中的 VBScript
可以將 VBScript 程式碼同時放在`
`和``部分中,如下所示:<html> <head> <script type = "text/vbscript"> <!-- Function sayHello() msgbox("Hello World") End Function //--> </script> </head> <body> <script type = "text/vbscript"> <!-- document.write("Hello World") //--> </script> <input type = "button" onclick = "sayHello()" value = "Say Hello" /> </body> </html>
它將產生以下結果:一條“Hello World”訊息和一個“Say Hello”按鈕。單擊按鈕後,將向用戶顯示一個包含訊息“Hello World”的訊息框。
Hello World
外部檔案中的 VBScript
當開始更廣泛地使用 VBScript 時,可能會發現某些情況下,在網站的多個頁面上重複使用相同的 VBScript 程式碼。不必在多個 HTML 檔案中維護相同的程式碼。
script
標籤提供了一種機制,允許您將 VBScript 儲存在外部檔案中,然後將其包含到 HTML 檔案中。以下是一個示例,演示如何使用script
標籤及其src
屬性在 HTML 程式碼中包含外部 VBScript 檔案:
<html> <head> <script type = "text/vbscript" src = "filename.vbs" ></script> </head> <body> ....... </body> </html>
要從外部檔案源使用 VBScript,需要將所有 VBScript 原始碼寫入副檔名為“.vbs”的簡單文字檔案中,然後按上述方式包含該檔案。例如,可以將以下內容儲存在 filename.vbs 檔案中,然後在包含 filename.vbs 檔案後,在 HTML 檔案中使用sayHello 函式。
Function sayHello() Msgbox "Hello World" End Function
QTP 中的 VBScript 位置
VBScript 位於 QTP(Quick Test Professional)工具中,但它**不**包含在 HTML 標記內。指令碼檔案儲存為 .vbs 副檔名,並由 Quick Test Professional 執行引擎執行。
VBScript - 變數
VBScript 變數
變數是用於儲存值的命名記憶體位置,該值可以在指令碼執行期間更改。VBScript 只有一個基本資料型別,即**Variant**。
宣告變數的規則:
變數名必須以字母開頭。
變數名不能超過 255 個字元。
變數**不能**包含句點(.)。
變數名在宣告的上下文中必須唯一。
宣告變數
使用“dim”關鍵字宣告變數。由於只有一個基本資料型別,因此所有宣告的變數預設都是 Variant 型別。因此,使用者**無需**在宣告期間提及資料型別。
**示例 1** − 在此示例中,IntValue 可用作字串、整數甚至陣列。
Dim Var
**示例 2** − 兩個或多個宣告用逗號 (,) 分隔。
Dim Variable1,Variable2
為變數賦值
賦值類似於代數表示式。變數名位於左側,後跟等於號 (=),然後是其右側的值。
規則
數值應不帶雙引號宣告。
字串值應括在雙引號 (" ") 中。
日期和時間變數應括在井號 (#) 中。
示例
' Below Example, The value 25 is assigned to the variable. Value1 = 25 ' A String Value ‘VBScript’ is assigned to the variable StrValue. StrValue = “VBScript” ' The date 01/01/2020 is assigned to the variable DToday. Date1 = #01/01/2020# ' A Specific Time Stamp is assigned to a variable in the below example. Time1 = #12:30:44 PM#
變數的作用域
可以使用以下語句宣告變數,這些語句確定變數的作用域。變數的作用域在過程或類中使用時起著至關重要的作用。
- Dim
- Public
- Private
Dim
在過程級別使用“Dim”關鍵字宣告的變數僅在同一過程中可用。在指令碼級別使用“Dim”關鍵字宣告的變數對同一指令碼中的所有過程都可用。
**示例** − 在下面的示例中,Var1 和 Var2 在指令碼級別宣告,而 Var3 在過程級別宣告。
**注意** − 本章的範圍是瞭解變數。函式將在後續章節中詳細介紹。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim Var1 Dim Var2 Call add() Function add() Var1 = 10 Var2 = 15 Dim Var3 Var3 = Var1 + Var2 Msgbox Var3 'Displays 25, the sum of two values. End Function Msgbox Var1 ' Displays 10 as Var1 is declared at Script level Msgbox Var2 ' Displays 15 as Var2 is declared at Script level Msgbox Var3 ' Var3 has No Scope outside the procedure. Prints Empty </script> </body> </html>
Public
使用 "Public" 關鍵字宣告的變數可用於所有關聯指令碼中的所有過程。宣告 "public" 型別變數時,"Dim" 關鍵字將替換為 "Public"。
**示例** − 在以下示例中,Var1 和 Var2 在指令碼級別可用,而 Var3 由於宣告為 Public,因此可在關聯的指令碼和過程中使用。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim Var1 Dim Var2 Public Var3 Call add() Function add() Var1 = 10 Var2 = 15 Var3 = Var1+Var2 Msgbox Var3 'Displays 25, the sum of two values. End Function Msgbox Var1 ' Displays 10 as Var1 is declared at Script level Msgbox Var2 ' Displays 15 as Var2 is declared at Script level Msgbox Var3 ' Displays 25 as Var3 is declared as Public </script> </body> </html>
Private
宣告為 "Private" 的變數僅在其宣告的指令碼內具有作用域。宣告 "Private" 型別變數時,"Dim" 關鍵字將替換為 "Private"。
**示例** − 在以下示例中,Var1 和 Var2 在指令碼級別可用。Var3 宣告為 Private,它僅對這個特定指令碼可用。"Private" 變數的使用在類中更為突出。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim Var1 Dim Var2 Private Var3 Call add() Function add() Var1 = 10 Var2 = 15 Var3 = Var1+Var2 Msgbox Var3 'Displays the sum of two values. End Function Msgbox Var1 ' Displays 10 as Var1 is declared at Script level Msgbox Var2 ' Displays 15 as Var2 is declared at Script level Msgbox Var3 ' Displays 25 but Var3 is available only for this script. </script> </body> </html>
VBScript - 常量
常量是用於儲存值的命名記憶體位置,該值在指令碼執行期間**不能**更改。如果使用者嘗試更改常量值,則指令碼執行將導致錯誤。常量的宣告方式與變數的宣告方式相同。
宣告常量
語法
[Public | Private] Const Constant_Name = Value
常量可以是 Public 或 Private 型別。使用 Public 或 Private 是可選的。Public 常量可用於所有指令碼和過程,而 Private 常量可在過程或類中使用。可以為宣告的常量分配任何值,例如數字、字串或日期。
示例 1
在此示例中,pi 的值為 3.4,它在訊息框中顯示圓的面積。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim intRadius intRadius = 20 const pi = 3.14 Area = pi*intRadius*intRadius Msgbox Area </script> </body> </html>
示例 2
以下示例說明如何為常量分配字串和日期值。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Const myString = "VBScript" Const myDate = #01/01/2050# Msgbox myString Msgbox myDate </script> </body> </html>
示例 3
在下面的示例中,使用者嘗試更改常量值;因此,最終將出現**執行錯誤**。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim intRadius intRadius = 20 const pi = 3.14 pi = pi*pi 'pi VALUE CANNOT BE CHANGED.THROWS ERROR' Area = pi*intRadius*intRadius Msgbox Area </script> </body> </html>
VBScript - 運算子
什麼是運算子?
讓我們來看一個表示式 *4 + 5 等於 9*。這裡,4 和 5 稱為**運算元**,+ 稱為**運算子**。VBScript 語言支援以下型別的運算子:
- 算術運算子
- 比較運算子
- 邏輯(或關係)運算子
- 連線運算子
算術運算子
VBScript 支援以下算術運算子:
假設變數 A 為 5,變數 B 為 10,則:
運算子 | 描述 | 示例 |
---|---|---|
+ | 將兩個運算元相加 | A + B 將得到 15 |
- | 從第一個運算元中減去第二個運算元 | A - B 將得到 -5 |
* | 將兩個運算元相乘 | A * B 將得到 50 |
/ | 將分子除以分母 | B / A 將得到 2 |
% | 模運算子和整數除法後的餘數 | B MOD A 將得到 0 |
^ | 指數運算子 | B ^ A 將得到 100000 |
要更好地理解這些運算子,您可以自己嘗試一下。
比較運算子
VBScript 語言支援以下比較運算子:
假設變數 A 為 10,變數 B 為 20,則:
運算子 | 描述 | 示例 |
---|---|---|
= | 檢查兩個運算元的值是否相等,如果相等,則條件為真。 | (A == B) 為假。 |
<> | 檢查兩個運算元的值是否相等,如果不相等,則條件為真。 | (A <> B) 為真。 |
> | 檢查左側運算元的值是否大於右側運算元的值,如果大於,則條件為真。 | (A > B) 為假。 |
< | 檢查左側運算元的值是否小於右側運算元的值,如果小於,則條件為真。 | (A < B) 為真。 |
>= | 檢查左側運算元的值是否大於或等於右側運算元的值,如果大於或等於,則條件為真。 | (A >= B) 為假。 |
<= | 檢查左側運算元的值是否小於或等於右側運算元的值,如果小於或等於,則條件為真。 | (A <= B) 為真。 |
要更好地理解這些運算子,您可以自己嘗試一下。
邏輯運算子
VBScript 語言支援以下邏輯運算子:
假設變數 A 為 10,變數 B 為 0,則:
運算子 | 描述 | 示例 |
---|---|---|
AND | 稱為邏輯 AND 運算子。如果兩個條件都為真,則表示式為真。 | a<>0 AND b<>0 為假。 |
OR | 稱為邏輯 OR 運算子。如果兩個條件中的任何一個為真,則條件為真。 | a<>0 OR b<>0 為真。 |
NOT | 稱為邏輯 NOT 運算子。它反轉其運算元的邏輯狀態。如果條件為真,則邏輯 NOT 運算子將使其為假。 | NOT(a<>0 OR b<>0) 為假。 |
XOR | 稱為邏輯異或。它是 NOT 和 OR 運算子的組合。如果只有一個表示式計算結果為真,則結果為真。 | (a<>0 XOR b<>0) 為真。 |
要更好地理解這些運算子,您可以自己嘗試一下。
連線運算子
VBScript 語言支援以下連線運算子:
假設變數 A 為 5,變數 B 為 10,則:
運算子 | 描述 | 示例 |
---|---|---|
+ | 將兩個值作為變數值相加(數值) | A + B 將得到 15 |
& | 連線兩個值 | A & B 將得到 510 |
假設變數 A = "Microsoft",變數 B="VBScript",則:
運算子 | 描述 | 示例 |
---|---|---|
+ | 連線兩個值 | A + B 將得到 MicrosoftVBScript |
& | 連線兩個值 | A & B 將得到 MicrosoftVBScript |
**注意** − 連線運算子可用於數字和字串。如果變數儲存數值或字串值,則輸出取決於上下文。
要更好地理解這些運算子,您可以自己嘗試一下。
VBScript - 決策
決策允許程式設計師控制指令碼或其一部分的執行流程。執行由一個或多個條件語句控制。
以下是大多數程式語言中常見的典型決策結構的通用形式:

VBScript 提供以下型別的決策語句。
語句 | 描述 |
---|---|
if 語句 | if 語句由一個布林表示式和一個或多個語句組成。 |
if..else 語句 | if else 語句由一個布林表示式和一個或多個語句組成。如果條件為真,則執行If 語句下的語句。如果條件為假,則執行指令碼的Else 部分。 |
if...elseif..else 語句 | 一個if 語句後跟一個或多個ElseIf 語句,這些語句由布林表示式組成,然後後跟一個可選的 else 語句,當所有條件都為假時執行該語句。 |
巢狀 if 語句 | 另一個if 或elseif 語句中的if 或elseif 語句。 |
switch 語句 | switch 語句允許測試變數與值列表的相等性。 |
VBScript - 迴圈
可能需要多次執行一段程式碼的情況。通常,語句按順序執行:函式中的第一個語句首先執行,然後是第二個語句,依此類推。
程式語言提供各種控制結構,允許更復雜的執行路徑。迴圈語句允許我們多次執行一個語句或一組語句,以下是 VBScript 中迴圈語句的一般形式。

VBScript 提供以下型別的迴圈來處理迴圈需求。單擊以下連結以檢視其詳細資訊。
迴圈型別 | 描述 |
---|---|
for 迴圈 | 多次執行一系列語句,並縮寫管理迴圈變數的程式碼。 |
for ..each 迴圈 | 如果組中至少有一個元素,則執行此迴圈,併為組中的每個元素重複。 |
while..wend 迴圈 | 在執行迴圈體之前測試條件。 |
do...while迴圈 | do...while語句會在條件為True時一直執行。(即)迴圈會一直重複,直到條件為False。 |
do...until迴圈 | do...until語句會在條件為False時一直執行。(即)迴圈會一直重複,直到條件為True。 |
迴圈控制語句
迴圈控制語句會改變執行的正常順序。當執行離開作用域時,迴圈中所有剩餘語句將不會執行。
VBScript支援以下控制語句。點選以下連結檢視詳細資訊。
控制語句 | 描述 |
---|---|
Exit For語句 | 終止For迴圈語句,並將執行轉移到緊跟在迴圈之後的語句。 |
Exit Do語句 | 終止Do While語句,並將執行轉移到緊跟在迴圈之後的語句。 |
VBScript - 事件
什麼是事件?
VBScript與HTML的互動是透過使用者或瀏覽器操作頁面時發生的事件來處理的。頁面載入就是一個事件。使用者點選按鈕,點選也是一個事件。其他事件示例包括按下任何鍵、關閉視窗、調整視窗大小等。開發人員可以使用這些事件來執行VBScript編碼的響應,從而導致按鈕關閉視窗,向用戶顯示訊息,驗證資料,以及幾乎可以想象到的任何其他型別的響應。
事件是文件物件模型 (DOM) 的一部分,每個HTML元素都有一組特定的事件,可以觸發VBScript程式碼。請閱讀本簡短教程以更好地理解HTML事件參考。在這裡,我們將看到一些例子來理解事件和VBScript之間的關係。
onclick事件型別
這是最常用的事件型別,當用戶點選滑鼠左鍵時發生。您可以針對此事件型別新增驗證、警告等。
示例
<html> <head> <script language = "vbscript" type = "text/vbscript"> Function sayHello() msgbox "Hello World" End Function </script> </head> <body> <input type = "button" onclick = "sayHello()" value = "Say Hello"/> </body> </html>
它將產生以下結果,當您點選“Hello”按鈕時,將發生onclick事件,這將觸發sayHello()函式。
onsubmit事件型別
另一個最重要的事件型別是onsubmit。當您嘗試提交表單時,將發生此事件。因此,您可以針對此事件型別新增表單驗證。點選提交按鈕提交表單後,將出現訊息框。
點選提交按鈕提交表單後,將出現訊息框。
示例
<html> <head> </head> <body> <script language = "VBScript"> Function fnSubmit() Msgbox("Hello Tutorialspoint.Com") End Function </script> <form action = "/cgi-bin/test.cgi" method = "post" name = "form1" onSubmit = "fnSubmit()"> <input name = "txt1" type = "text"><br> <input name = "btnButton1" type = "submit" value="Submit"> </form> </body> </html>
onmouseover和onmouseout
這兩個事件型別將幫助您為影像甚至文字建立不錯的效果。當您將滑鼠移到任何元素上時,將發生onmouseover事件;當您將滑鼠從該元素移開時,將發生onmouseout事件。
示例
<html> <head> </head> <body> <script language = "VBScript"> Function AlertMsg Msgbox("ALERT !") End Function Function onmourse_over() Msgbox("Onmouse Over") End Function Sub txt2_OnMouseOut() Msgbox("Onmouse Out !!!") End Sub Sub btnButton_OnMouseOut() Msgbox("onmouse out on Button !") End Sub </script> <form action = "page.cgi" method = "post" name = "form1"> <input name = "txt1" type = "text" OnMouseOut = "AlertMsg()"><br> <input name = "txt2" type = "text" OnMouseOver = "onmourse_over()"> <br><input name = "btnButton" type = "button" value = "Submit"> </form> </body> </html>
當您將滑鼠懸停在文字框上以及當您將焦點從文字框和按鈕移開時,它將產生結果。
HTML 4標準事件
此處列出了標準HTML 4事件以供參考。此處,“指令碼”表示針對該事件執行的VBScript函式。
Event | 值 | 描述 |
---|---|---|
onchange | 指令碼 | 元素更改時執行指令碼 |
onsubmit | 指令碼 | 提交表單時執行指令碼 |
onreset | 指令碼 | 重置表單時執行指令碼 |
onblur | 指令碼 | 元素失去焦點時執行指令碼 |
onfocus | 指令碼 | 元素獲得焦點時執行指令碼 |
onkeydown | 指令碼 | 按下鍵時執行指令碼 |
onkeypress | 指令碼 | 按下並釋放鍵時執行指令碼 |
onkeyup | 指令碼 | 釋放鍵時執行指令碼 |
onclick | 指令碼 | 滑鼠點選時執行指令碼 |
ondblclick | 指令碼 | 滑鼠雙擊時執行指令碼 |
onmousedown | 指令碼 | 按下滑鼠按鈕時執行指令碼 |
onmousemove | 指令碼 | 滑鼠指標移動時執行指令碼 |
onmouseout | 指令碼 | 滑鼠指標移出元素時執行指令碼 |
onmouseover | 指令碼 | 滑鼠指標移到元素上時執行指令碼 |
onmouseup | 指令碼 | 釋放滑鼠按鈕時執行指令碼 |
VBScript和Cookie
什麼是Cookie?
Web瀏覽器和伺服器使用HTTP協議進行通訊,而HTTP是無狀態協議。但是對於商業網站,需要在不同頁面之間維護會話資訊。例如,一個使用者註冊完成後需要經過多個頁面。但是如何跨所有網頁維護使用者的會話資訊呢?在許多情況下,使用Cookie是記住和跟蹤偏好、購買、佣金以及其他需要改善訪問者體驗或網站統計資訊的資訊的最有效方法。
它是如何工作的?
您的伺服器以Cookie的形式向訪問者的瀏覽器傳送一些資料。瀏覽器可能會接受Cookie。如果接受,它將作為純文字記錄儲存在訪問者的硬碟上。現在,當訪問者到達您網站上的另一個頁面時,瀏覽器會將相同的Cookie傳送到伺服器以進行檢索。檢索後,您的伺服器就會知道/記住之前儲存的內容。Cookie是5個變長欄位的純文字資料記錄:
Expires − Cookie到期的日期。如果為空,則Cookie將在訪問者退出瀏覽器時過期。
Domain − 您網站的域名。
Path − 設定Cookie的目錄或網頁的路徑。如果您想從任何目錄或頁面檢索Cookie,則可以為空。
Secure − 如果此欄位包含“secure”一詞,則只能使用安全伺服器檢索Cookie。如果此欄位為空,則不存在此類限制。
Name=Value − Cookie以鍵值對的形式設定和檢索。
Cookie最初是為CGI程式設計設計的,Cookie的資料會在Web瀏覽器和Web伺服器之間自動傳輸,因此伺服器上的CGI指令碼可以讀取和寫入客戶端儲存的Cookie值。
VBScript還可以使用Document物件的cookie屬性來操作Cookie。VBScript可以讀取、建立、修改和刪除適用於當前網頁的Cookie。
儲存Cookie
建立Cookie的最簡單方法是將字串值賦給document.cookie物件,如下所示:
語法
document.cookie = "key1 = value1;key2 = value2;expires = date"
這裡的expires屬性是可選的。如果您使用有效的日期或時間提供此屬性,則Cookie將在給定的日期或時間過期,之後將無法訪問Cookie的值。
示例
以下是如何在input Cookie中設定客戶名稱的示例。
<html> <head> <script type = "text/vbscript"> Function WriteCookie If document.myform.customer.value = "" Then msgbox "Enter some value!" Else cookievalue = (document.myform.customer.value) document.cookie = "name = " + cookievalue msgbox "Setting Cookies : " & "name = " & cookievalue End If End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
它將產生以下結果。現在在文字框中輸入內容,然後按“設定Cookie”按鈕來設定Cookie。
現在,您的系統有一個名為name的Cookie。您可以使用多個以逗號分隔的key = value對設定多個Cookie。您將在下一節學習如何讀取此Cookie。
讀取Cookie
讀取Cookie與寫入Cookie一樣簡單,因為document.cookie物件的值就是Cookie。因此,您可以隨時使用此字串來訪問Cookie。document.cookie字串將保留以分號分隔的name = value對列表,其中name是Cookie的名稱,value是其字串值。您可以使用字串的split()函式將字串分解為鍵和值,如下所示:
示例
以下是如何獲取上一節中設定的Cookie的示例:
<html> <head> <script type = "text/vbscript"> Function ReadCookie allcookies = document.cookie msgbox "All Cookies : " + allcookies cookiearray = split(allcookies,";") For i = 0 to ubound(cookiearray) Name = Split(cookiearray(i),"=") Msgbox "Key is : " + Name(0) + " and Value is : " + Name(1) Next End Function </script> </head> <body> <form name = "myform" action = ""> <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/> </form> </body> </html>
注意 − 這裡,UBound是Array類的⼀個方法,它返回陣列的長度。我們將在單獨的章節中討論陣列;在此之前,請嘗試理解它。
它將產生以下結果。現在,按“獲取Cookie”按鈕檢視您在上⼀節中設定的Cookie。
注意 − 您的機器上可能已經設定了其他一些Cookie。因此,以上程式碼將向您顯示在您的機器上設定的所有Cookie。
設定Cookie過期日期
您可以透過設定過期日期並在Cookie中儲存過期日期,來將Cookie的生存期延長到當前瀏覽器會話之外。這可以透過將expires屬性設定為日期和時間來完成。
示例
以下示例說明如何設定1個月後的Cookie過期日期:
<html> <head> <script type = "text/vbscript"> Function WriteCookie() x = now() y = dateadd("m",1,now()) ' Making it to expire next cookievalue = document.myform.customer.value document.cookie = "name = " & cookievalue document.cookie = "expires = " & y msgbox("Setting Cookies : " & "name=" & cookievalue ) End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
刪除Cookie
有時,您可能想要刪除Cookie,以便後續嘗試讀取Cookie 時返回空值。為此,您只需要將過期日期設定為過去的時間即可。
示例
以下示例說明如何透過將Cookie的過期日期設定為過去1個月來刪除Cookie:
<html> <head> <script type = "text/vbscript"> Function WriteCookie() x = now() x = now() a = Month(x)-1 b = day(x) c = year(x) d = DateSerial(c,a,b) e = hour(x) msgbox e f = minute(x) msgbox f d = cdate(d & " " & e & ":" & f) msgbox d cookievalue = document.myform.customer.value document.cookie = "name = " & cookievalue document.cookie = "expires = " & d msgbox("Setting Cookies : " & "name=" & cookievalue ) End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
VBScript - 數字
數字函式幫助開發人員以有效的方式處理數字,並幫助他們轉換其子型別。它還有助於他們使用與VBScript關聯的內建數學函式。
數字轉換函式
數字函式幫助我們將給定的數字從一種資料子型別轉換為另一種資料子型別。
序號 | 函式和描述 |
---|---|
1 | CDbl 一個函式,它將任何變體子型別的給定數字轉換為雙精度型。 |
2 | CInt 一個函式,它將任何變體子型別的給定數字轉換為整數。 |
3 | CLng 一個函式,它將任何變體子型別的給定數字轉換為長整型。 |
4 | CSng 一個函式,它將任何變體子型別的給定數字轉換為單精度型。 |
5 | Hex 一個函式,它將任何變體子型別的給定數字轉換為十六進位制。 |
數字格式化函式
數字格式化函式幫助開發人員以他們希望的格式表達給定的數字。
序號 | 函式和描述 |
---|---|
1 | FormatNumber 一個函式,它將返回格式化為數字的表示式。 |
2 | FormatPercent 一個函式,它將返回格式化為百分比的表示式。 |
數學函式
數學函式幫助我們計算給定輸入數字的數學和三角函式。
序號 | 函式和描述 |
---|---|
1 | Int 一個函式,它返回給定數字的整數部分。 |
2 | Fix 一個函式,它返回給定數字的整數部分。 |
3 | Log 一個函式,它返回給定數字的自然對數。不允許負數。 |
4 | Oct 一個函式,它返回給定數字的八進位制值。 |
5 | Hex 一個函式,它返回給定數字的十六進位制值。 |
6 | Rnd 一個函式,它返回0到1之間的隨機數。 |
7 | Sgn 一個函式,它返回與指定數字的符號對應的數字。 |
8 | Sqr 一個函式,它返回給定數字的平方根。不允許負數。 |
9 | Abs 一個函式,返回給定數字的絕對值。 |
10 | Exp 一個函式,返回e的指定次冪的值。 |
11 | Sin 一個函式,返回給定數字的正弦值。 |
12 | Cos 一個函式,返回給定數字的餘弦值。 |
13 | Tan 一個函式,返回給定數字的正切值。 |
VBScript - 字串
字串是由字元組成的序列,可以包含字母、數字、特殊字元或所有這些字元的組合。如果一個變數用雙引號 " " 括起來,則該變數被稱為字串。
語法
variablename = "string"
示例
str1 = "string" ' Only Alphabets str2 = "132.45" ' Only Numbers str3 = "!@#$;*" ' Only Special Characters Str4 = "Asc23@#" ' Has all the above
字串函式
VBScript 提供預定義的字串函式,幫助開發者更有效地處理字串。以下是VBScript支援的字串方法。請點選每個方法以瞭解詳細資訊。
函式名稱 | 描述 |
---|---|
InStr | 返回指定子字串的第一次出現位置。搜尋從左到右進行。 |
InstrRev | 返回指定子字串的第一次出現位置。搜尋從右到左進行。 |
Lcase | 返回指定字串的小寫形式。 |
Ucase | 返回指定字串的大寫形式。 |
Left | 返回字串左側指定數量的字元。 |
Right | 返回字串右側指定數量的字元。 |
Mid | 根據指定的引數返回字串中指定數量的字元。 |
Ltrim | 返回去除指定字串左側空格後的字串。 |
Rtrim | 返回去除指定字串右側空格後的字串。 |
Trim | 返回去除前後空格後的字串值。 |
Len | 返回給定字串的長度。 |
Replace | 用另一個字串替換字串後返回的字串。 |
Space | 用指定數量的空格填充字串。 |
StrComp | 比較兩個指定的字串後返回一個整數值。 |
String | 返回一個字串,其中包含指定字元,重複指定次數。 |
StrReverse | 反轉給定字串字元順序後返回的字串。 |
VBScript - 陣列
什麼是陣列?
我們非常清楚,變數是用於儲存值的容器。有時,開發人員需要一次在一個變數中儲存多個值。當一系列值儲存在一個變數中時,它被稱為**陣列變數**。
陣列宣告
陣列的宣告方式與變數的宣告方式相同,只是陣列變數的宣告使用括號。在下面的示例中,陣列的大小在括號中指定。
'Method 1 : Using Dim Dim arr1() 'Without Size 'Method 2 : Mentioning the Size Dim arr2(5) 'Declared with size of 5 'Method 3 : using 'Array' Parameter Dim arr3 arr3 = Array("apple","Orange","Grapes")
雖然陣列大小指定為5,但它可以容納6個值,因為陣列索引從零開始。
陣列索引不能為負數。
VBScript陣列可以儲存任何型別的變數。因此,一個數組可以在單個數組變數中儲存整數、字串或字元。
為陣列賦值
透過為每個要賦值的值指定陣列索引值來為陣列賦值。它可以是字串。
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim arr(5) arr(0) = "1" 'Number as String arr(1) = "VBScript" 'String arr(2) = 100 'Number arr(3) = 2.45 'Decimal Number arr(4) = #10/07/2013# 'Date arr(5) = #12.45 PM# 'Time document.write("Value stored in Array index 0 : " & arr(0) & "<br />") document.write("Value stored in Array index 1 : " & arr(1) & "<br />") document.write("Value stored in Array index 2 : " & arr(2) & "<br />") document.write("Value stored in Array index 3 : " & arr(3) & "<br />") document.write("Value stored in Array index 4 : " & arr(4) & "<br />") document.write("Value stored in Array index 5 : " & arr(5) & "<br />") </script> </body> </html>
當以上程式碼儲存為.HTML並在Internet Explorer中執行時,會產生以下結果:
Value stored in Array index 0 : 1 Value stored in Array index 1 : VBScript Value stored in Array index 2 : 100 Value stored in Array index 3 : 2.45 Value stored in Array index 4 : 7/10/2013 Value stored in Array index 5 : 12:45:00 PM
多維陣列
陣列不限於一維,最多可以有60維。二維陣列是最常用的陣列。
示例
在下面的示例中,聲明瞭一個具有3行4列的多維陣列。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim arr(2,3) ' Which has 3 rows and 4 columns arr(0,0) = "Apple" arr(0,1) = "Orange" arr(0,2) = "Grapes" arr(0,3) = "pineapple" arr(1,0) = "cucumber" arr(1,1) = "beans" arr(1,2) = "carrot" arr(1,3) = "tomato" arr(2,0) = "potato" arr(2,1) = "sandwitch" arr(2,2) = "coffee" arr(2,3) = "nuts" document.write("Value in Array index 0,1 : " & arr(0,1) & "<br />") document.write("Value in Array index 2,2 : " & arr(2,2) & "<br />") </script> </body> </html>
當以上程式碼儲存為.HTML並在Internet Explorer中執行時,會產生以下結果:
Value stored in Array index : 0 , 1 : Orange Value stored in Array index : 2 , 2 : coffee
Redim語句
ReDim語句用於宣告動態陣列變數並分配或重新分配儲存空間。
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
**Preserve** - 一個可選引數,用於在更改最後一維的大小是保留現有陣列中的資料。
**varname** - 一個必需引數,表示變數的名稱,應遵循標準變數命名約定。
**subscripts** - 一個必需引數,表示陣列的大小。
示例
在下面的示例中,一個數組被重新定義,然後在更改陣列的現有大小時保留值。
**注意** - 將陣列大小調整為小於其原始大小,則將丟失已刪除元素中的資料。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim a() i = 0 redim a(5) a(0) = "XYZ" a(1) = 41.25 a(2) = 22 REDIM PRESERVE a(7) For i = 3 to 7 a(i) = i Next 'to Fetch the output For i = 0 to ubound(a) Msgbox a(i) Next </script> </body> </html>
當我們將以上指令碼儲存為HTML並在Internet Explorer中執行時,會產生以下結果。
XYZ 41.25 22 3 4 5 6 7
陣列方法
VBScript中有一些內建函式可以幫助開發人員有效地處理陣列。以下是與陣列一起使用的所有方法。請點選方法名稱以瞭解詳細資訊。
Function | 描述 |
---|---|
LBound | 一個函式,返回一個整數,該整數對應於給定陣列的最小下標。 |
UBound | 一個函式,返回一個整數,該整數對應於給定陣列的最大下標。 |
Split | 一個函式,返回一個包含指定數量值的陣列。基於分隔符進行分割。 |
Join | 一個函式,返回一個字串,該字串包含陣列中指定數量的子字串。這是Split方法的完全相反的函式。 |
Filter | 一個函式,返回一個基於零的陣列,該陣列包含基於特定篩選條件的字串陣列的子集。 |
IsArray | 一個函式,返回一個布林值,指示輸入變數是否為陣列。 |
Erase | 一個函式,回收陣列變數的已分配記憶體。 |
VBScript - 日期和時間函式
VBScript日期和時間函式幫助開發人員將日期和時間從一種格式轉換為另一種格式,或者以適合特定條件的格式表達日期或時間值。
日期函式
Function | 描述 |
---|---|
Date | 一個函式,返回當前系統日期。 |
CDate | 一個函式,將給定的輸入轉換為日期。 |
DateAdd | 一個函式,返回新增指定時間間隔後的日期。 |
DateDiff | 一個函式,返回兩個時間段之間的差值。 |
DatePart | 一個函式,返回給定輸入日期值的指定部分。 |
DateSerial | 一個函式,返回給定年份、月份和日期的有效日期。 |
FormatDateTime | 一個函式,根據提供的引數格式化日期。 |
IsDate | 一個函式,返回一個布林值,指示提供的引數是否為日期。 |
Day | 一個函式,返回一個介於1到31之間的整數,表示指定日期的天。 |
Month | 一個函式,返回一個介於1到12之間的整數,表示指定日期的月份。 |
Year | 一個函式,返回一個整數,表示指定日期的年份。 |
MonthName | 一個函式,返回指定日期的月份名稱。 |
WeekDay | 一個函式,返回一個整數(1到7),表示指定日期的星期幾。 |
WeekDayName | 一個函式,返回指定日期的星期幾名稱。 |
時間函式
Function | 描述 |
---|---|
Now | 一個函式,返回當前系統日期和時間。 |
Hour | 一個函式,返回一個介於0到23之間的整數,表示給定時間的時部分。 |
Minute | 一個函式,返回一個介於0到59之間的整數,表示給定時間的分鐘部分。 |
Second | 一個函式,返回一個介於0到59之間的整數,表示給定時間的秒部分。 |
Time | 一個函式,返回當前系統時間。 |
Timer | 一個函式,返回從上午12:00開始的秒數和毫秒數。 |
TimeSerial | 一個函式,返回特定輸入的小時、分鐘和秒的時間。 |
TimeValue | 一個函式,將輸入字串轉換為時間格式。 |
VBScript - 過程
什麼是函式?
函式是一組可重用的程式碼,可以在程式中的任何地方呼叫。這樣就無需一遍遍地編寫相同的程式碼。這將使程式設計師能夠將大型程式分解成許多小的、易於管理的函式。除了內建函式外,VBScript還允許我們編寫使用者定義的函式。本節將解釋如何在VBScript中編寫自己的函式。
函式定義
在使用函式之前,我們需要定義該函式。在VBScript中定義函式最常見的方法是使用Function關鍵字,後跟唯一的函式名,它可能包含或不包含引數列表和一個帶有**End Function**關鍵字的語句,該語句表示函式的結束。
基本的語法如下:
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function Functionname(parameter-list) statement 1 statement 2 statement 3 ....... statement n End Function </script> </body> </html>
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function sayHello() msgbox("Hello there") End Function </script> </body> </html>
呼叫函式
要在指令碼後面的某個位置呼叫函式,只需使用**Call**關鍵字編寫該函式的名稱。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function sayHello() msgbox("Hello there") End Function Call sayHello() </script> </body> </html>
函式引數
到目前為止,我們已經看到了沒有引數的函式,但是呼叫函式時可以傳遞不同的引數。這些傳遞的引數可以在函式內部捕獲,並且可以對這些引數進行任何操作。函式使用**Call**關鍵字呼叫。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function sayHello(name, age) msgbox( name & " is " & age & " years old.") End Function Call sayHello("Tutorials point", 7) </script> </body> </html>
從函式返回值
VBScript函式可以有一個可選的return語句。如果您想從函式返回值,則需要此語句。例如,您可以將兩個數字傳遞給函式,然後您可以期望函式在呼叫程式中返回它們的乘積。
**注意** - 函式可以返回多個以逗號分隔的值,作為分配給函式名本身的陣列。
示例
此函式採用兩個引數並將它們連線起來,並在呼叫程式中返回結果。在VBScript中,值使用函式名從函式返回。如果您想返回兩個或更多值,則函式名將與一個值陣列一起返回。在呼叫程式中,結果儲存在result變數中。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function concatenate(first, last) Dim full full = first & last concatenate = full 'Returning the result to the function name itself End Function </script> </body> </html>
現在,我們可以如下呼叫此函式:
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function concatenate(first, last) Dim full full = first & last concatenate = full 'Returning the result to the function name itself End Function ' Here is the usage of returning value from function. dim result result = concatenate("Zara", "Ali") msgbox(result) </script> </body> </html>
子過程
子過程類似於函式,但有一些區別。
子過程不返回值,而函式可能返回或不返回值。
子過程可以不使用Call關鍵字呼叫。
子過程始終包含在**Sub**和**End Sub**語句中。
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Sub sayHello() msgbox("Hello there") End Sub </script> </body> </html>
呼叫過程
要在指令碼後面的某個位置呼叫過程,只需使用或不使用**Call**關鍵字編寫該過程的名稱。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Sub sayHello() msgbox("Hello there") End Sub sayHello() </script> </body> </html>
函式的高階概念
關於VBScript函式還有很多東西需要學習。我們可以按值或按引用傳遞引數。請點選每個引數以瞭解更多資訊。
VBScript - 對話方塊
什麼是對話方塊?
VBScript允許開發人員有效地與使用者互動。它可以是用於向用戶顯示訊息的訊息框,也可以是使用者可以輸入值的輸入框。
VBScript MsgBox函式
MsgBox函式顯示一個訊息框,並等待使用者單擊一個按鈕,然後根據使用者單擊的按鈕執行操作。
語法
MsgBox(prompt[,buttons][,title][,helpfile,context])
引數描述
Prompt − 必需引數。在對話方塊中顯示的訊息字串。提示的最大長度約為 1024 個字元。如果訊息超過一行,則可以使用回車符 (Chr(13)) 或換行符 (Chr(10)) 在各行之間進行分隔。
buttons − 可選引數。一個數值表示式,用於指定要顯示的按鈕型別、使用的圖示樣式、預設按鈕的標識以及訊息框的模式。如果留空,buttons 的預設值為 0。
Title − 可選引數。在對話方塊標題欄中顯示的字串表示式。如果標題留空,則應用程式名稱將放置在標題欄中。
helpfile − 可選引數。一個字串表示式,用於標識要用於提供對話方塊上下文相關幫助的幫助檔案。
context − 可選引數。一個數值表示式,用於標識幫助作者分配給相應幫助主題的幫助上下文編號。如果提供了 context,則也必須提供 helpfile。
Buttons 引數可以取以下任何值:
0 vbOKOnly 只顯示“確定”按鈕。
1 vbOKCancel 顯示“確定”和“取消”按鈕。
2 vbAbortRetryIgnore 顯示“中止”、“重試”和“忽略”按鈕。
3 vbYesNoCancel 顯示“是”、“否”和“取消”按鈕。
4 vbYesNo 顯示“是”和“否”按鈕。
5 vbRetryCancel 顯示“重試”和“取消”按鈕。
16 vbCritical 顯示嚴重錯誤訊息圖示。
32 vbQuestion 顯示警告查詢圖示。
48 vbExclamation 顯示警告訊息圖示。
64 vbInformation 顯示資訊訊息圖示。
0 vbDefaultButton1 第一個按鈕為預設按鈕。
256 vbDefaultButton2 第二個按鈕為預設按鈕。
512 vbDefaultButton3 第三個按鈕為預設按鈕。
768 vbDefaultButton4 第四個按鈕為預設按鈕。
0 vbApplicationModal 應用程式模式。在使用者響應訊息框之前,當前應用程式將無法工作。
4096 vbSystemModal 系統模式。在使用者響應訊息框之前,所有應用程式都將無法工作。
上述值在邏輯上分為四組:第一組 (0 到 5) 指示要在訊息框中顯示的按鈕;第二組 (16、32、48、64) 描述要顯示的圖示的樣式;第三組 (0、256、512、768) 指示哪個按鈕必須為預設按鈕;第四組 (0、4096) 確定訊息框的模式。
返回值
MsgBox 函式可以返回以下值之一:
1 - vbOK - 單擊了“確定”
2 - vbCancel - 單擊了“取消”
3 - vbAbort - 單擊了“中止”
4 - vbRetry - 單擊了“重試”
5 - vbIgnore - 單擊了“忽略”
6 - vbYes - 單擊了“是”
7 - vbNo - 單擊了“否”
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> 'Message Box with just prompt message MsgBox("Welcome") 'Message Box with title, yes no and cancel Butttons a = MsgBox("Do you like blue color?",3,"Choose options") ' Assume that you press No Button document.write("The Value of a is " & a) </script> </body> </html>
執行上述指令碼時,將顯示訊息框,如果單擊“否”按鈕,則 a 的值為 7。
The Value of a is 7
VBScript InputBox 函式
InputBox 函式幫助使用者從使用者處獲取值。輸入值後,如果使用者單擊“確定”按鈕或按鍵盤上的 ENTER 鍵,InputBox 函式將返回文字框中的文字。如果使用者單擊“取消”按鈕,則函式將返回空字串 ("")。
語法
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
引數描述
Prompt − 必需引數。在對話方塊中顯示的訊息字串。提示的最大長度約為 1024 個字元。如果訊息超過一行,則可以使用回車符 (Chr(13)) 或換行符 (Chr(10)) 在各行之間進行分隔。
Title − 可選引數。在對話方塊標題欄中顯示的字串表示式。如果標題留空,則應用程式名稱將放置在標題欄中。
Default − 可選引數。使用者希望顯示在文字框中的預設文字。
XPos − 可選引數。X 軸的位置,表示提示距螢幕左側的水平距離。如果留空,則輸入框水平居中。
YPos − 可選引數。Y 軸的位置,表示提示距螢幕左側的垂直距離。如果留空,則輸入框垂直居中。
helpfile − 可選引數。一個字串表示式,用於標識要用於提供對話方塊上下文相關幫助的幫助檔案。
context − 可選引數。一個數值表示式,用於標識幫助作者分配給相應幫助主題的幫助上下文編號。如果提供了 context,則也必須提供 helpfile。
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> ' Input Box with only Prompt InputBox("Enter a number") ' Input Box with a Title a = InputBox("Enter a Number","Enter Value") msgbox a ' Input Box with a Prompt,Title and Default value a = InputBox("Enter a Number","Enter Value",123) msgbox a ' Input Box with a Prompt,Title,Default and XPos a = InputBox("Enter your name","Enter Value",123,700) msgbox a ' Input Box with a Prompt,Title and Default and YPos a = InputBox("Enter your name","Enter Value",123,,500) msgbox a </script> </body> </html>
執行上述指令碼時,將顯示輸入框並顯示使用者輸入的值。
面向物件的 VBScript
什麼是物件
VBScript 執行時物件幫助我們完成各種任務。本節將幫助您瞭解如何例項化物件並使用它。
語法
為了無縫地使用物件,我們需要使用Set關鍵字宣告物件並例項化它。
Dim objectname 'Declare the object name Set objectname = CreateObject(object_type)
示例
在下面的示例中,我們正在建立一個型別為Scripting.Dictionary的物件。
Dim obj Set obj = CreateObject("Scripting.Dictionary")
銷燬物件
銷燬物件的意義在於釋放記憶體並重置物件變數。
語法
為了銷燬物件,我們需要使用Set關鍵字,後跟物件名稱,並將其指向Nothing。
Set objectname = Nothing 'Destroy the object.
示例
在下面的示例中,我們正在建立一個型別為Scripting.Dictionary的物件。
Dim obj Set obj = CreateObject("Scripting.Dictionary") Set obj = Nothing.
物件用法
請單擊每個給定的物件型別以瞭解更多資訊。
物件型別 | 描述 |
---|---|
Class | 類是一個容器,它包含與其關聯的方法和變數,並透過建立類型別的物件來訪問。 |
Scripting.FileSystemObject | 它是一組物件,我們可以用它來處理檔案系統。 |
Scripting.Dictionary | 一組物件,用於建立字典物件。 |
Debug | 一個全域性物件,我們可以用它將輸出傳送到 Microsoft 指令碼偵錯程式。 |
VBScript - 正則表示式
正則表示式是由構成模式的一系列字元組成的,主要用於搜尋和替換。建立模式的目的是匹配特定的字串,以便開發人員可以根據條件提取字元並替換某些字元。
RegExp 物件
RegExp 物件幫助開發人員匹配字串的模式,其屬性和方法幫助我們輕鬆地使用正則表示式。它類似於 JavaScript 中的 RegExp。
屬性
Pattern − Pattern 方法表示用於定義正則表示式的字串,在使用正則表示式物件之前應先設定它。
IgnoreCase − 一個布林屬性,表示如果為 true,則正則表示式是否應針對字串中的所有可能的匹配項進行測試;如果為 false,則不進行測試。如果未明確指定,則 IgnoreCase 值設定為 False。
Global − 一個布林屬性,表示正則表示式是否應針對字串中的所有可能的匹配項進行測試。如果未明確指定,則 Global 值設定為 False。
方法
Test(search-string) − Test 方法以字串作為引數,如果正則表示式可以成功與字串匹配,則返回 True,否則返回 False。
Replace(search-string, replace-string) − Replace 方法採用 2 個引數。如果搜尋成功,則它將該匹配項替換為 replace-string,並返回新字串。如果沒有匹配項,則返回原始 search-string。
Execute(search-string) − Execute 方法的工作方式類似於 Replace,只是它返回一個 Matches 集合物件,其中包含每個成功匹配項的 Match 物件。它不會修改原始字串。
Matches 集合物件
Matches 集合物件作為 Execute 方法的結果返回。此集合物件可以包含零個或多個 Match 物件,並且此物件的屬性是隻讀的。
Count − Count 方法表示集合中 Match 物件的數量。
Item − Item 方法使可以從 Matches 集合物件訪問 Match 物件。
Match 物件
Match 物件包含在 Matches 集合物件中。這些物件表示在搜尋字串後成功的匹配。
FirstIndex − 它表示在原始字串中發生匹配的位置。此索引是從零開始的,這意味著字串中的第一個位置為 0。
Length − 表示匹配字串的總長度的值。
Value − 表示匹配的值或文字的值。訪問 Match 物件時,這也是預設值。
關於 Pattern 引數的全部內容
模式構建類似於 PERL。模式構建是使用正則表示式時最重要的事情。在本節中,我們將討論如何根據各種因素建立模式。
位置匹配
位置匹配的意義在於確保我們將正則表示式放置在正確的位置。
符號 | 描述 |
---|---|
^ | 僅匹配字串的開頭。 |
$ | 僅匹配字串的結尾。 |
\b | 匹配任何單詞邊界 |
\B | 匹配任何非單詞邊界 |
字面量匹配
任何形式的字元,例如字母、數字或特殊字元,甚至十進位制、十六進位制都可以視為字面量。由於某些字元在正則表示式的上下文中已經具有特殊的含義,因此我們需要使用轉義序列對其進行轉義。
符號 | 描述 |
---|---|
字母數字 | 僅匹配字母和數字字元。 |
\n | 匹配換行符。 |
\[ | 匹配 [ 字面量 |
\] | 匹配 ] 字面量 |
\( | 匹配 ( 字面量 |
\) | 匹配 ) 字面量 |
\t | 匹配水平製表符 |
\v | 匹配垂直製表符 |
\| | 匹配 | 字面量 |
\{ | 匹配 { 字面量 |
\} | 匹配 } 字面量 |
\\ | 匹配 \ 字面量 |
\? | 匹配 ? 字面量 |
\* | 匹配 * 字面量 |
\+ | 匹配 + 字面量 |
\. | 匹配 . 字面量 |
\b | 匹配任何單詞邊界 |
\B | 匹配任何非單詞邊界 |
\f | 匹配換頁符 |
\r | 匹配回車符 |
\xxx | 匹配八進位制數 xxx 的 ASCII 字元。 |
\xdd | 匹配十六進位制數 dd 的 ASCII 字元。 |
\uxxxx | 匹配 UNICODE 字面量 xxxx 的 ASCII 字元。 |
字元類匹配
字元類是由自定義分組形成並在 [ ] 中括起來的模式。如果我們期望字元類不應該出現在列表中,則應使用否定符號(即脫字元 ^)忽略該特定字元類。
符號 | 描述 |
---|---|
[xyz] | 匹配字元集中包含的任何字元類。 |
[^xyz] | 匹配字元集中未包含的任何字元類。 |
. | 匹配除 \n 之外的任何字元類 |
\w | 匹配任何單詞字元類。等效於 [a-zA-Z_0-9] |
\W | 匹配任何非單詞字元類。等效於 [^a-zA-Z_0-9] |
\d | 匹配任何數字類。等效於 [0-9]。 |
\D | 匹配任何非數字字元類。等效於 [^0-9]。 |
\s | 匹配任何空格字元類。等效於 [ \t\r\n\v\f] |
\S | 匹配任何非空格字元類。等效於 [^\t\r\n\v\f] |
重複匹配
重複匹配允許在正則表示式中進行多次搜尋。它還指定正則表示式中元素重複的次數。
符號 | 描述 |
---|---|
* | 匹配給定正則表示式的零個或多個出現。等效於 {0,}。 |
+ | 匹配給定正則表示式的一個或多個出現。等效於 {1,}。 |
? | 匹配給定正則表示式的零個或一個出現。等效於 {0,1}。 |
{x} | 匹配給定正則表示式的恰好 x 個出現。 |
{x,} | 匹配給定正則表示式至少 x 個或更多個出現。 |
{x,y} | 匹配給定正則表示式的 x 到 y 個出現。 |
替換和分組
替換和分組幫助開發人員建立更復雜的正則表示式,尤其是在處理正則表示式中複雜的子句時,這提供了極大的靈活性和控制力。
符號 | 描述 |
---|---|
0 | 分組子句以建立子句。“(xy)?(z)”匹配“xyz”或“z”。 |
| | 替換組合一個正則表示式子句,然後匹配任何單個子句。“(ij)|(23)|(pq)”匹配“ij”或“23”或“pq”。 |
構建正則表示式
下面是一些示例,清楚地解釋瞭如何構建正則表示式。
正則表示式 | 描述 |
---|---|
"^\s*.." 和 "..\s*$" | 表示在一行中可以有任意數量的前導和尾隨空格字元。 |
"((\$\s?)|(#\s?))?" | 表示可選的 $ 或 # 符號,後跟可選的空格。 |
"((\d+(\.(\d\d)?)?))" | 表示至少存在一個數字,後跟可選的小數點和兩位小數。 |
示例
以下示例檢查使用者是否輸入了電子郵件ID,其格式應匹配,即電子郵件ID後跟“@”,然後後跟域名。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> strid = "welcome.user@tutorialspoint.co.us" Set re = New RegExp With re .Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$" .IgnoreCase = False .Global = False End With ' Test method returns TRUE if a match is found If re.Test( strid ) Then Document.write(strid & " is a valid e-mail address") Else Document.write(strid & " is NOT a valid e-mail address") End If Set re = Nothing </script> </body> </html>
VBScript - 錯誤處理
程式設計中存在三種類型的錯誤:(a)語法錯誤,(b)執行時錯誤和(c)邏輯錯誤。
語法錯誤
語法錯誤,也稱為解析錯誤,發生在 VBScript 的解釋時間。例如,以下行會導致語法錯誤,因為它缺少右括號:
<script type = "text/vbscript"> dim x,y x = "Tutorialspoint" y = Ucase(x </script>
執行時錯誤
執行時錯誤,也稱為異常,發生在執行期間,解釋之後。例如,以下行會導致執行時錯誤,因為這裡的語法正確,但在執行時它試圖呼叫 fnmultiply,這是一個不存在的函式:
<script type = "text/vbscript"> Dim x,y x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) Function fnadd(x,y) fnadd = x+y End Function </script>
邏輯錯誤
邏輯錯誤可能是最難追蹤的錯誤型別。這些錯誤不是語法或執行時錯誤的結果。相反,當你在驅動指令碼的邏輯中犯錯並且沒有得到預期的結果時,就會發生這些錯誤。你無法捕獲這些錯誤,因為它取決於你的業務需求你想要在程式中使用哪種邏輯。例如,將數字除以零或編寫進入無限迴圈的指令碼。
Err 物件
假設我們有一個執行時錯誤,那麼執行將停止並顯示錯誤訊息。作為開發人員,如果我們想捕獲錯誤,則使用 **Error** 物件。
示例
在下面的示例中,**Err.Number** 給出錯誤號,**Err.Description** 給出錯誤描述。
<script type = "text/vbscript"> Err.Raise 6 ' Raise an overflow error. MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description Err.Clear ' Clear the error. </script>
VBScript 其他語句
VBScript 還有一些其他重要的語句來幫助開發人員開發高效的指令碼。下表列出了這樣一些重要語句的集合。在本節中,我們將詳細討論這些語句以及示例。
類別 | 函式名/語句名 |
---|---|
選項 | Option Explicit |
指令碼引擎 ID | ScriptEngine |
變數 | IsArray, IsEmpty, IsNull, IsNumeric, IsObject, TypeName |
表示式 | Eval, Execute |
控制語句 | With...End With |
數學函式 | Randomize |
Option Explicit
**Option Explicit** 強制開發人員在程式碼的某些部分使用 **Dim** 語句宣告變數。
語法
Option Explicit
示例
如果我們使用 **Option Explicit** 並且沒有宣告變數,則直譯器將丟擲錯誤。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Option Explicit Dim x,y,z,a x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) Function fnadd(x,y) fnadd = x+y End Function </script> </body> </html>
ScriptEngine
**ScriptEngine** 表示正在使用的指令碼語言的詳細資訊。它也與 **ScriptEngineMajorVersion, ScriptEngineMinorVersion, ScriptEngineBuildVersion** 結合使用,分別給出 vbscript 引擎的主版本、次版本和內部版本。
語法
ScriptEngine
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim scriptdetails scriptdetails = " Version " & ScriptEngine & " - " 'For getting Major version, use ScriptEngineMajorVersion' scriptdetails = scriptdetails & ScriptEngineMajorVersion & "." 'For getting Minor version, use ScriptEngineMinorVersion' scriptdetails = scriptdetails & ScriptEngineMinorVersion & "." 'For getting Build version, use ScriptEngineBuildVersion' scriptdetails = scriptdetails & ScriptEngineBuildVersion Document.write scriptdetails </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
Version VBScript - 5.8.16996
IsEmpty
IsEmpty 函式用於檢查表示式是否為空。它返回布林值。如果變數未初始化或顯式設定為 Empty,則 **IsEmpty** 返回 True。否則表示式返回 False。
語法
IsEmpty(expression)
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim var, MyCheck MyCheck = IsEmpty(var) Document.write "Line 1 : " & MyCheck & "<br />" var = Null ' Assign Null. MyCheck = IsEmpty(var) Document.write "Line 2 : " & MyCheck & "<br />" var = Empty ' Assign Empty. MyCheck = IsEmpty(var) Document.write "Line 3 : " & MyCheck & "<br />" </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
Line 1 : True Line 2 : False Line 3 : True
IsNull
IsNull 函式用於檢查表示式是否具有有效資料。它返回布林值。如果變數為 Null,則 **IsNull** 返回 True,否則表示式返回 False。
語法
IsNull(expression)
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim var, res res = IsNull(var) document.write "Line 1 : " & res & "<br />" var = Null res = IsNull(var) document.write "Line 2 : " & res & "<br />" var = Empty res = IsNull(var) document.write "Line 3 : " & res & "<br />" </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
Line 1 : False Line 2 : True Line 3 : False
IsObject
IsObject 函式用於檢查表示式是否具有有效的物件。它返回布林值。如果表示式包含物件子型別,則 **IsObject** 返回 True,否則表示式返回 False。
語法
IsObject(expression)
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim fso,b b = 10 set fso = createobject("Scripting.Filesystemobject") x = isobject(fso) Document.write "Line 1 : " & x & "<br />" y = isobject(b) Document.write "Line 2 : " & y & "<br />" </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
Line 1 : True Line 2 : False
IsNumeric
IsNumeric 函式用於檢查表示式是否具有數字子型別。它返回布林值。如果表示式包含數字子型別,則 **IsObject** 返回 True,否則表示式返回 False。
語法
IsNumeric(expression)
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim var, chk var = 20 chk = IsNumeric(var) Document.write "Line 1 : " & chk & "<br />" var = "3.1415935745" chk = IsNumeric(var) Document.write "Line 2 : " & chk & "<br / >" var = "20 Chapter 23.123 VBScript" chk = IsNumeric(var) Document.write "Line 3 : " & chk & "<br / >" </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
Line 1 : True Line 2 : True Line 3 : False
TypeName
TypeName 函式用於返回變數的變體子型別資訊。
語法
TypeName(varname)
Typename 函式可以返回以下任何值。
Byte - 位元組值
Integer - 整數值
Long - 長整數值
Single - 單精度浮點值
Double - 雙精度浮點值
Currency - 貨幣值
Decimal - 十進位制值
Date - 日期或時間值
String - 字串值
Boolean - 布林值
Empty - 未初始化的值
Null - 無效資料
Object - 物件的型別名稱
Nothing - 尚未引用物件例項的物件變數
Error
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim ArrVar(2), vartype NullVar = Null ' Assign Null value. vartype = TypeName(3.1450) Document.write "Line 1 : " & vartype & "<br />" vartype = TypeName(432) Document.write "Line 2 : " & vartype & "<br />" vartype = TypeName("Microsoft") Document.write "Line 3 : " & vartype & "<br />" vartype = TypeName(NullVar) Document.write "Line 4 : " & vartype & "< br />" vartype = TypeName(ArrVar) Document.write "Line 5 : " & vartype & "<br />" </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
Line 1 : Double Line 2 : Integer Line 3 : String Line 4 : Null Line 5 : Variant()
Eval
Eval 函式執行表示式並返回結果為字串或數字。
語法
Eval(expression)
引數 Expression 可以是字串表示式或數字。如果將不包含數字表達式或函式名而僅包含簡單文字字串的字串傳遞給 Eval 函式,則會發生執行時錯誤。例如,Eval("VBScript") 會導致錯誤。
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Document.write Eval("10 + 10") & "<br />" Document.write Eval("101 = 200") & "<br />" Document.write Eval("5 * 3") & "<br />" </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
20 false 15
Execute
Execute 語句接受的引數是一個字串表示式,其中包含一個或多個要執行的語句。
語法
Execute(expression)
在 VBScript 中,a = b 可以用兩種方式解釋。它可以被視為賦值語句,其中 x 的值被賦給 y。它也可以被解釋為一個表示式,它測試 a 和 b 是否具有相同的值。如果它們相同,則結果為 True;如果它們不同,則結果為 False。Execute 語句總是使用第一種解釋,而 Eval 語句總是使用第二種解釋。
示例
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim x x = "Global" y = "VBScript" Execute("x = y") msgbox x msgbox y </script> </body> </html>
執行指令碼時,將檔案儲存為 .html 副檔名,螢幕上將顯示以下結果。
VBScript VBScript
With..End With
With 語句允許我們對指定的物件執行一系列操作,而無需反覆明確提及物件名稱。
語法
With (objectname) statement 1 statement 2 statement 3 ... ... statement n End With
示例
執行以下指令碼後,將開啟 Winword 並輸入指定的文字。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Msg = "Vbscript" & vbCrLf & "Programming" Set objWord = CreateObject("Word.Application") objWord.Visible = True ' Objects methods are accessed without requaliyfying the objects again.' With objWord .Documents.Add .Selection.TypeText Msg .Selection.WholeStory End With </script> </body> </html>
Randomize
Randomize 語句初始化隨機數生成器,這有助於開發人員生成隨機數。
語法
Randomize [number]
示例
執行以下指令碼後,將開啟 Winword 並輸入指定的文字。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim MyValue Randomize MyValue = Int((100 * Rnd) + 1) ' Generate random value between 1 and 100. MsgBox MyValue </script> </body> </html>
將上述指令碼儲存為 HTML,並在 IE 中執行指令碼後,將顯示以下輸出。
42