VBScript语言概述

一. VBScript 语言概述

我们都希望制作出的网页既精致美观又生动活泼而且功能 强大 , 用 VBScript 语言可以实现这一愿望。

VBScriptMicrosoft 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" OnClick="alerter()">

</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 循环 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 Function 过程   例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)

返回一个字符串,其中一个指定子字符串的字符顺序是反向的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值