VBScript語言 基礎知識

來源:互聯網
上載者:User
vbscript

一.VBScript語言概述

我們都希望製作出的網頁既精緻美觀又生動活潑而且功能強大,用VBScript語言可以實現這一願望。

VBScript是Microsoft Visual Basic的簡化版本。

VBScript是特意為在瀏覽器中進行工作而設計的。

編程方法和Visual Basic基本相同 。

VBScript只有一種資料類型,即,Variant類型。

VBScript不支援Visual Basic中傳統的I/O功能,即不能通過Open語句和函數在客戶機上讀寫檔案,這樣防止了可能對客戶機造成的危害;VBScript不能調用API函數,這是因為API函數調用會危及客戶機的安全,如病毒可以輕而易舉地通過API函數調用來破壞客戶機;Visual Basic支援Screen、Printer、App、Debug、Err和Clipboard等系統對象,但VBScript只支援Err對象,該對象用於為應用程式提供執行階段錯誤處理。

二.VBScript語言特點

易學易用

VBScript既可編寫伺服器指令碼,也可編寫用戶端指令碼。

用戶端程式設計語言的優點是

(1)瀏覽器完成了所有的工作,這可以減輕伺服器的負擔。

(2)用戶端程式運行起來比伺服器端程式快得多。

一般來說,可以解釋VBScript指令碼的瀏覽器只有Microsoft Internet Explorer。

三.VBScript程式的編輯和調試

必須使用<SCRIPT>標籤,才能使用指令碼語言 ,格式如下 :

<SCRIPT>

    VBScript代碼

</SCRIPT>

例如,我們可以用一句VBScript語句將"你好,學習VBScript很有趣"寫入HTML頁面。

<SCRIPT LANGUAGE="VBScript">

<!--

    Window.Document.Write("你好,學習VBScript很有趣!")

-->

</SCRIPT>

解釋上例中的文檔對象的用法:

在文件物件模型(DOM)中,Window對象是最高層的對象,Document對象是Window對象的子物件,所以引用Document對象時應該使用Window.Document,而Write()是Document對象的方法,所以引用Write()方法時,應該使用Window.Document.Write()。

又如:

<SCRIPT language=VBScript>

<!--

        Window.alert("你好")

-->

</SCRIPT>

<SCRIPT>標籤的LANGUAGE屬性

用以指定包含在<SCRIPT>標籤中的指令碼代碼的語言類型 。

<SCRIPT LANGUAGE="VBScript">

<SCRIPT LANGUAGE=“JavaScript">

<SCRIPT LANGUAGE=“JScript">

<SCRIPT>標籤的RUNAT屬性

RUNAT屬性用以指定包含在<SCRIPT>標籤中的指令碼代碼的運行於服務端還是用戶端。

<SCRIPT LANGUAGE="VBScript" Runat=server>

      VBScript代碼

</SCRIPT>

注意:檔案要儲存成.asp,如果在客戶運行則Runat屬性可以省略。

注釋標籤的運用

<SCRIPT  LANGUAGE="VBScript">

<!--

        VBScript代碼

-->

</SCRIPT>

對不支援VBScript的瀏覽器,會將VBScript代碼將作為頁面的文本直接顯示在頁面上,這將會極大地破壞整個頁面的布局,所以我們需要運用注釋標籤來解決這個問題 。

四.用VBScript往網頁上寫內容。

以下樣本VBScript代碼的功能是在頁面上寫入“這是一個VBScript的簡單樣本” 。

<HTML>

<HEAD>

<TITLE>一個 VBScript 樣本</TITLE>

<SCRIPT  LANGUAGE="VBScript">

<!--

  Window.Document.Write("這是一個VBScript的簡單樣本")

-->

</SCRIPT>

</HEAD>

<BODY></BODY>

</HTML>

按鈕按下後能夠出現警告框的樣本 。

<HTML>

<HEAD>

<TITLE>一個 VBScript 樣本</TITLE>

</HEAD>

<BODY>

<FORM>

<INPUT TYPE="button" VALUE="ALERT" >

</FORM>

</BODY>

</HTML>

<SCRIPT LANGUAGE="VBScript">

<!--

   sub alerter()

      window.alert("這是一個VBScript的簡單樣本")

   end sub

-->

</SCRIPT>   執行

五.VBScript代碼的位置不同執行的順序不同

下載時立即啟動並執行,而且沒有包含於過程之中VBScript代碼嵌入到<HEAD>標籤和</HEAD>標籤之間,這段VBScript代碼將在頁面繪製之前執行。例如

有時候我們並不希望VBScript代碼在頁面繪製之前執行,而是希望能夠在頁面繪製中,在頁面合適的位置進行處理。

例如

下載時立即啟動並執行,而且沒有包含於過程之中VBScript代碼嵌入到<HEAD>標籤和</HEAD>標籤之間,這段VBScript代碼將在頁面繪製之前執行。例如

有時候我們並不希望VBScript代碼在頁面繪製之前執行,而是希望能夠在頁面繪製中,在頁面合適的位置進行處理。例如

另外一種解決方式:先直接在頁面中寫上表格的標籤,然後運用VBScript代碼在表格內寫字串。例如。

調用時運行VBScript代碼的位置

一般情況下,我們最好是將VBScript代碼放在<HEAD>標籤和</HEAD>標籤之間,這不是編寫指令碼的強制要求,而是一種良好的編寫風格。 例如。

還有一種嵌入的方法,就是在頁面元素事件處理中直接嵌入VBScript代碼(一般為一行)。

 <INPUT TYPE="button" VALUE="ALERT"

 OnClick=“Window.alert(‘這是一個VBScript的簡單樣本’)”>例如。

六.用戶端指令碼程式碼範例

用瀏覽器開啟時,將顯示一個文字框和一個按鈕。在文字框中輸入數字後,單擊"提交"按鈕,瀏覽器會尋找並執行過程Button1_OnClick。執行時將調用表單的Submit方法將資料提交到伺服器。若輸入不正確,如不是數字或小於1或大於50,則會調用MsgBox語句產生訊息框提示輸入正確的數字。

七.VBScript 資料類型

VBScript 只有一種資料類型,稱為Variant。

Variant可以進一步區分數值資訊的特定含義。例如使用數值資訊表示日期或時間。

見 VBScript 資料類型表

1 .什麼是常量

常數是具有一定含義的名稱,用於代替數字或字串,其值從不改變。VBScript定義了許多固有常數。

2.聲明常量

使用Const語句可以在VBScript中建立使用者自訂常數。例如:

Const MyString = "這是一個字串。"

Const MyAge = 49

請注意字串文字包含在兩個引號(“”)之間。日期文字和時間文字包含在兩個井號(#)之間。例如:

Const CutoffDate = #6-1-03#

3.VBScript變數

變數是電腦記憶體中已命名的記憶體位置,該位置可儲存指令碼運行時能更改的資訊。

在VBscript指令碼中,使用變數並不需要瞭解變數在電腦記憶體中的地址,只要通過變數名引用變數就可以查看或更改變數的值。

4.聲明變數

語句格式:DIM myvar1, myvar2, myvar3

在VBscript指令碼中,使用一個變數之前不需要專門聲明它。

通過直接在指令碼中使用變數名的方式叫隱式聲明變數。

隱式聲明變數不是一個好習慣,先聲明變數再使用是編程的良好習慣。

VBScript中提供了Option Explicit語句來強制顯式聲明變數,這樣如果你在編寫長而複雜的程式時,如果你敲錯了應該變數的名字,將會產生錯誤,可以協助你調試指令碼。 例如。

5.變數命名規則

變數命名必須遵循VBScript的標準命名規則。變數命名必須遵循:

(1)第一個字元必須是字母。

(2)不能包含嵌入的句點。

(3)長度不能超過255個字元。

(4)在被聲明的範圍內必須唯一。

(5)不能使用VBScript中的保留字作為變數名。

在VBScript中給變數命名不區分大小寫。給變數命名時,為便於記憶與使用最好能做到“顧名知義”。

6.注釋VBScript指令碼

Rem comment

' comment

例如:

Dim MyStr1,MyStr2

MyStr1 = "Hello": Rem 語句和注釋用冒號隔開。

MyStr2 = "Goodbye"' 這同樣是注釋不需要冒號。

Rem 在沒有代碼的行上加註釋不必用冒號。

REM I am a VBScript comment.

' I am also a VBScript comment.

7.VBScript指令碼中的續行符

在VBScript指令碼中當一行寫得很長時,程式的可讀性會變得很差,如果從文法上沒法換行,而我們又想換行時可使用續行符,續行符是空格緊跟一個底線(“ _”)。請注意:一定不要忘記前面的空格。

請注意:一定不要忘記前面的空格。

八.VBScript 資料類型

1.VBScript中的算術運算子

用於執行數學計算的運算子。

VBScript中提供了7個算術運算子,其中加(+)、減(-)、乘(*)、除(/)和取負(-)幾個運算子的含義與數學中的基本相同。

 \(整除操作符)

在VBScript中,整數除法先對運算元進行四捨五入運算使運算元變為整數,然後進行除法運算,整數除法運算後的結果是一個整數,1.5\2=1,而1.4\2=0。

mod(模數操作符)

將兩個運算元相除,返回相除後的餘數,例如運算式5 mod 3的運算結果為2。38.57 mod 14.21的運算(先四捨五入再取餘)結果為11。

2.串連運算子

(1)+(加操作符)

加操作符還可以對字串類型的運算元進行運算,然後將兩個字串相連起來作為運算結果。例如,"How are "+"you! "的運算結果為"How are you! "。

(2)&(串連運算子 )

用於字串的串連,即將兩個字串變數串連起來,產生一個新的字串。+運算子也能進行字串的串連,但只能將兩個字串串連。&運算子能強制性地將兩個運算式(不論是什麼類型)做字串串連,用+運算子串連其它類型資料時會出現錯誤。 

3.比較操作符

比較操作符將運算元進行比較,然後返回一個邏輯值,表明這個比較操作的結果是否為真,比較操作符的運算元可以是數實值型別或者字串類型的資料。比較操作符共有6種。分別是。

=、> 、 < 、 >= 、 <= 、 <>

除了數實值型別之外,字串類型也可以進行比較,在比較字串的過程中,VBScript把字串中的每個字母轉換成相應的ASCII碼值,然後從第一個字元開始比較兩個字串中相應的字元,比較它們的ASCII碼值。

4.比較操作符樣本

例如,"hello"="Hello"的返回結果為False,因為左運算元的第一個字元為h,右運算元的第一個字元為H,h的ASCII碼值為104,H的ASCII碼值為72,從第一個字元開始就不相等了,所以運算式的值為False。

而如果運算式為"came">="come",首先,比較兩個運算元的第一個字元,都是c,這樣,不能直接判定兩個運算元的大小,然後再比較兩個運算元的第二個字元,左運算元為a,右運算元為o,a的ASCII碼值為97,o的ASCII碼值為111,當然97<111,所以對於這個運算式來說,它的返回結果為False。

5.邏輯運算子

and(與操作符)

result = expression1 And expression2

若且唯若兩個運算式均為 True,則 result 為 True。如果任一運算式為 False,則 result 為 False。

or(或操作符)

result = expression1 Or expression2

如果兩個運算式中至少有一個為True,則result為True。

not(非操作符)

非操作符只有一個運算元,當運算元為True時,返回結果為False,當運算元為False時,返回結果為True。例如運算式not(2>3)邏輯運算結果為True,因為2>3的結果為False,而運算式not(2<3)的邏輯運算結果為False,因為2<3的結果為True。

6.運算子優先順序

運算時,總是先執行括弧中的運算子,然後再執行括弧外的運算子。

首先計算算術運算子,然後計算比較子,最後計算邏輯運算子。所有比較子的優先順序相同,即按照從左至右的順序計算比較子。

九.標量變數和陣列變數

多數情況下,只需為聲明的變數賦一個值。只包含一個值的變數被稱為標量變數。有時候,將多個相關值賦給一個變數更為方便,因此可以建立包含一系列值的變數(即具有相同名子不同下標值的一組變數),稱為陣列變數。

1.聲明固定數組

陣列變數和標量變數是以相同的方式聲明的,唯一的區別是聲明陣列變數時變數名後面帶有括弧()。與前面討論的變數不同,數組在使用之前必須聲明。 

例如:Dim A(10)

注意:VBScript中數組的下標從0開始。上例聲明了一個包含11個元素的一維數組。

2.聲明動態數組

目前討論過的只限於固定大小的數組。一旦你聲明了一個固定大小的數組,你將不能改變數組中的元素個數。要改變一個固定數組的大小,你必須刪除它再重新建立。VBScript中另外有一種數組叫動態數組。動態數組是運行時可以改變大小的數組。

當聲明一個動態數組時,你不需要指定數組的大小與維數,只需在數組名後加一對空括弧。但在第一次給一個動態數組分配數值之前,必須用Redim語句指定它的大小與維數。 例如

十.流程式控制制語句

1.條件控制語句

(1)只有一個條件陳述式形式: 舉例

If 條件運算式 then

        語句塊

End If

(2)條件為 True 和 False 時分別啟動並執行語句形式:舉例

If條件運算式then

        語句塊1

else

        語句塊2

End If

(3)If判斷結構嵌套使用 : 舉例

If條件運算式0 then

     If條件運算式1 then   

         語句塊1

     else

         語句塊2

     End If

else

     語句塊3

End If

(4)elseIf結構 : 舉例

If條件運算式1 then

        語句塊1

    elseIf條件運算式2 then

        語句塊2

    elseIf條件運算式3 then

        語句塊3

         ……

    elseIf條件運算式n then

        語句塊n

else

語句塊n+1

End If

(5)使用 Select Case 進行判斷 : 舉例

Select Case 測試運算式

Case 運算式列表1

[語句塊1]

[Case 運算式列表達2

[語句塊2]]

        ……

[Case Else運算式列表n

[語句塊n]]

End Select

2.迴圈控制語句

(1)Do...Loop 迴圈 例1

可以使用 Do...Loop 語句多次(次數不定)運行語句塊。當條件為 True 時或條件變為 True 之前,重複執行語句塊。

Do...Loop 語句形式:

第一種文法形式是先判斷迴圈條件

Do [{While | Until} condition]

[statements]

[Exit Do]

[statements]

Loop

Do...Loop 迴圈例2  例3

第二種文法形式是先執行一次迴圈,再判斷迴圈條件

Do

[statements]

[Exit Do]

[statements]

Loop [{While | Until} condition]

(2)While...Wend迴圈

While...Wend 語句是當指定的條件為 True 時,執行一系列的語句。文法形式為:

While condition

   [statements]

Wend

(3)For...Next迴圈  舉例

For...Next語句是以指定次數重複執行一組語句。

語句一般形式是:

For counter = start To end [Step step]

[statements]

[Exit For]

[statements]

Next

For...Next迴圈嵌套  舉例

可以將一個For...Next迴圈放置在另一個For...Next迴圈中,組成嵌套迴圈。每個迴圈中的counter要使用不同的變數名。

(4)For Each...Next迴圈  舉例

For Each...Next 迴圈與 For...Next 迴圈類似。For Each...Next不是將語句運行指定的次數,而是對於數組中的每個元素或對象集合中的每一項重複一組語句。這在不知道集合中元素的數目時非常有用。

For Each...Next 語句的一般形式如下:

For Each element In group

[statements]

[Exit For]

[statements]

Next [element] 

(5)On Error 語句

文法形式:On Error Resume Next

當一個錯誤發生時,這條語句就執行緊靠發生錯誤語句後面的語句,或者執行緊靠調用進程後面的語句。

Sub cmdSubmit_OnClick

       On Error Resume Next

     Myvar="aaa"+30

       '顯示引起錯誤的描述

       If Err <> 0 Then

          Msgbox "An error occurred. " & Err.Description

            Err.Clear

       End if

End Sub

十一.過程與函資料

1.Sub過程  例1 例2 例3

聲明Sub過程的名稱、參數以及構成其主體的代碼。

Sub name [(arglist)]

[statements]

[Exit Sub]

[statements]

End Sub

注意:Sub過程預設為公用,即它們對於指令碼中的所有其他過程都是可見的。Sub過程中局部變數的值在調用過程中不被保留。

注意:不能在任何其他過程(例如,Function)中定義Sub過程。

Call語句

將控制權傳遞給Sub或Function過程。其語句的一般形式如下:

[Call] name [argumentlist]

可選項關鍵字。如果指定此關鍵字,則必須用括弧把argumentlist括起來。例如:

Call MyProc(0)

你可以調用同一個過程任意多次。

2.函數程序  例1 例2 例3 例4

聲明Function過程的名稱、參數以及構成其主體的代碼,其一般語句形式是:

Function name [( arglist)]

[statements]

[name = expression]

[Exit Function]

[statements]

[name = expression]

End Function

與Sub過程基本相同,與Sub過程的不同之處是:函數有傳回值,過程則沒有。要從函數返回一個值,只需在函數內將值賦給函數名。在函數的任意位置都可以出現任意個這樣的賦值。如果沒有給name賦值,則過程將返回一個預設值:數值函數返回0,字串函數返回零長度字串("")。

3.輸入、輸出函數

以下所講的輸入、輸出函數只能在用戶端使用,不能在服務端使用。

(1)InputBox函數

文法形式是:

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])

在對話方塊中顯示提示,等待使用者輸入文本或單擊按鈕,並返迴文本框內容。 例如

Dim Input

Input = InputBox("輸入姓名")

MsgBox ("輸入的姓名是:" & Input)

(2)MsgBox函數  例1

在對話方塊中顯示訊息,等待使用者單擊按鈕,並返回一個值指示使用者單擊的按鈕。

MsgBox(prompt[,buttons][,title][,helpfile,context])

Dim MyVar

MyVar = MsgBox ("Hello World!", 65, "MsgBox Example")

'依據點擊的按鈕情況返回 1 或 2。

4.字串函數

在VBscript中,系統提供了大量的字串函數來處理有關字串的事情。

(1)Left函數

文法形式:Left(string,length)

返回包含字串中從左邊算起指定數量的字元。

(2)Right函數

文法形式:Right(string,length)

返回包含從字串右邊取出的指定數量的字元。

(3)Mid函數

文法形式:Mid(string,start[,length])

返回包含字串中指定數量的字元。

(4)Space函數

文法形式:Space(number)

返回特定數目的空格。

(5)Ltrim、Rtrim、Trim函數

文法形式:LTrim(string)、RTrim(string)、Trim(string)

返回包含指定字串的拷貝,沒有前置空白(LTrim)、尾隨空白(RTrim)或前置和尾隨空白(Trim)。

(6)InStr函數

文法形式:

InStr([start,]string1,string2[,compare])

返回一指定字串在另一字串中最先出現的位置。

(7) LCase函數

文法形式:LCase(string)

返迴轉成小寫String。

(8)UCase函數

文法形式:UCase(string)

返迴轉成大寫的String。

(9)Len函數

文法形式:Len(string|varname)

返回包含字串內字元的數目,或是儲存一變數所需的位元組數。

(10)Chr函數

文法形式:Chr(charcode)

返回ASCII碼錶與charcode對應的字元。

(11)Asc函數

文法形式:Asc(string)

返回一個代表字串中首字母的字元ASCII碼。

(12)Split函數

文法形式:

Split(expression[,delimiter[,count[,start]]])

返回下標從0開始的一維數組,其中包含指定數目的子字串。

(13)Replace函數

返回字串,其中指定數目的某子字串被替換為另一個子字串。

文法形式:

Replace(expression,find,replacewith[,compare[,count[,start]]])

(14)StrComp函數

文法形式:

StrComp(string1, string2[, compare])

返回一個表明字串比較結果的值。

(15)String函數

文法形式:

String(number,character)

返回Variant(String),其中包含指定長度重複字元的字串。

(16)Filter函數

Filter函數功能是過濾一個字串數組,返回合格子集合數組。

文法形式:

Filter(InputStrings,Value[,Include[,Compare]])

(17)StrReverse函數

文法形式:StrReverse(string1)

返回一個字串,其中一個指定子字串的字元順序是反向的。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。