您现在的位置:首页 >> 网络教学 >> WEB编程技术 >> 内容

脚本编写语言VBScript

时间:2009-6-19 10:48:11 点击:3399

 

一、 VBScript简介

VBScriptMicrosoft Visual Basic Scripting Edition的简称,HTML文件中使用的一种VB脚本语言,它主要运行在Microsoft Internet Explorer中的Web客户机和Microsoft Internet Information Server中的Web服务器上,是VB的一个子集,可以实现部分VB的功能,VBScript的基本语法与Visual BasicVB)和Visual Basic for Applications(VBA)基本一致,不过它们并不是完全一样的,因为VBScript是特意为在浏览器中进行工作而设计的,它不包括一些在脚本这个范围以外的特性,如文件访问和打印等等。VBScript 是脚本语言,应该算计算机的内置语言,就是可以用脚本语言,不借助系统以外的其他编译工具就能直接控制计算机。而VB(即Visual Basic)就是普通的编程语言,VBScriptVisual Basic是有联系的,他们的语法基本一致,VBScript作为脚本语言,当然就会比Visual Basic简单,从而使HTML语言得到大大的扩展。除了在浏览器里使用VBScript之外,还有一些应用程序也支持VBScript,因此,在Microsoft Windows环境下,VBScript实际是一种比较通用的脚本编程语言。

二、 VBScript 基础

(一)在主页中嵌入VBScript脚本程序

同其他脚本语言一样,在HTML文件中嵌入VBScript的语法是:

<script language= “vbscript”>

<!—

这里是程序

-->

</script>

VBScript程序被嵌在<script></script>标签之间,用language属性指定脚本语言是VBScript,代码部分用HTML的注释标签<!—-->保护起来,是为了防止在某些不支持脚本的浏览器中脚本代码污染HTML文件。虽然<script>…</script>可以出现在HTML文件的<head>…</head>之间或<body>…</body>之间,但为了便于处理,一般把主要的脚本放在<head>…</head>之间,而且把主要工作放在SubFunction等过程中,供需要时调用。这样做可以有效地提高编程的效率和程序的可读性。

(二)语句、行和注释

VBScript中程序执行的单位是语句(Statement),一般每个语句由一行代码构成,也可以用“ _”续行,把单个语句拆分成多行,以利于阅读。反之,也可以用“:”号把多个语句放在同一行里。除了语句和空行之外,程序里还可以包含注释,所有注释都以“”开头,引号后面的部分会被解释器忽略,注释也可以跟在语句后面,但不能出现在续行符后面。

(三)命名规则和数字

VBScript语言中,给变量、函数、过程和常数命名要遵循以下规则:

必须以字母开头;不能包含句点“.”和其他类型声明字符;长度不大于255个字符。控件、窗体、类和模块名不能超过40个字符;不能和已有的关键词同名,如IfLoopOrAbs等;VBScript中对名字的大小写是不敏感的,因此对于helloHELLO解释器都会一视同仁,认为它们完全是同一个名字。

VBScript中使用数字时若没有任何修饰,则一律为十进制数,如20.3999等;此外,也可以使用八进制数,需要用“&O(其中“O”是单词Octal的首字母O,而不是数字零)做前缀,如&O077&O143等;还可以使用十六进制数,要用&H做前缀,如&H1CF&H213等。

(四)数据值

VBScript中的数据值只是一种类型———VariantVariant 是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为 Variant VBScript 中唯一的数据类型,所以它也是 VBScript 中所有函数的返回值的数据类型。

最简单的 Variant 可以包含数字或字符串信息。Variant 用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理。这就是说,如果使用看起来象是数字的数据,则 VBScript 会假定其为数字并以适用于数字的方式处理。与此类似,如果使用的数据只可能是字符串,则 VBScript 将按字符串处理。当然,也可以将数字包含在引号 (" ") 中使其成为字符串。

除简单数字或字符串以外,Variant 可以进一步区分数值信息的特定含义。例如使用数值信息表示日期或时间。此类数据在与其他日期或时间数据一起使用时,结果也总是表示为日期或时间。当然,从 Boolean 值到浮点数,数值信息是多种多样的。Variant 包含的数值信息类型称为子类型。大多数情况下,可将所需的数据放进 Variant 中,而 Variant 也会按照最适用于其包含的数据的方式进行操作。下表13-1显示 Variant 包含的数据子类型。

13-1  Variant 包含的数据子类型

子类型

描述

Empty

未初始化的 Variant。对于数值变量,值为 0;对于字符串变量,值为零长度字符串 ("")

Null

不包含任何有效数据的 Variant

Boolean

包含 True False

Byte

包含 0 255 之间的整数。

Integer

包含 -32,768 32,767 之间的整数。

Currency

-922,337,203,685,477.5808 922,337,203,685,477.5807

Long

包含 -2,147,483,648 2,147,483,647 之间的整数。

Single

包含单精度浮点数,负数范围从 -3.402823E38 -1.401298E-45,正数范围从 1.401298E-45 3.402823E38

Double

包含双精度浮点数,负数范围从 -1.79769313486232E308 -4.94065645841247E-324,正数范围从 4.94065645841247E-324 1.79769313486232E308

Date (Time)

包含表示日期的数字,日期范围从公元 100 1 1 日到公元 9999 12 31 日。

String

包含变长字符串,最大长度可为 20 亿个字符。

Object

包含对象。

Error

包含错误号。

您可以使用转换函数来转换数据的子类型。另外,可使用 VarType 函数返回数据的 Variant 子类型。

(五)变量

变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息。例如,可以创建一个名为 ClickCount 的变量来存储用户单击 Web 页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。在 VBScript 中只有一个基本数据类型,即 Variant,因此所有变量的数据类型都是 Variant

声明变量的一种方式是使用 Dim 语句、Public 语句和 Private 语句在 Script 中显式声明变量。例如:

 Dim DegreesFahrenheit

声明多个变量时,使用逗号分隔变量。例如:

 Dim Top, Bottom, Left, Right

另一种方式是通过直接在 Script 中使用变量名这一简单方式隐式声明变量。这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行 Script 时出现意外的结果。因此,最好使用 Option Explicit 语句显式声明所有变量,并将其作为 Script 的第一条语句。

变量命名必须遵循 VBScript 的标准命名规则。变量命名必须遵循:

·        第一个字符必须是字母。

·        不能包含嵌入的句点。

·        长度不能超过 255 个字符。

·        在被声明的作用域内必须唯一。

(六)常量

常量与变量的区别在于常量一旦定义就不能再重新赋值和修改。定义常量的方法是使用Const声明并赋值,例如:

Const string= “hello”     定义常量string,值为字符串 “hello”

Const now=#22:02:00#        定义常量now,值为时间220200

Const pai=3.1415927       定义常量pai,值为浮点数3.141 592 7

(七)运算符

VBScript中包含几类基本运算符:算术运算符、比较运算符、逻辑运算符和字符串连接运算符,每一类中包含若干运算符。这些运算符与变量和常量组合起来构成计算的单元————表达式,每个表达式可以包含许多运算符,最终获得一个计算结果。一个表达式的计算顺序是由各个运算符的优先级决定的,优先级越高,则越早执行该步计算。在几大类运算符之间,优先级顺序是:

小括号>算术运算符>字符串连接运算符>比较运算符>逻辑运算符

在任何情况下,首先计算小括号里的表达式,然后按上面的顺序进行计算。各类内部各个运算符之间也区分优先级,如“先乘除后加减”。若是运算符优先级相同,则按从左到右的顺序进行运算。

1.算术运算符

13-2列出算术运算符并按优先级排列。

13-2 算术运算符

运算符

运算

运算符

运算

^

\

整除

-

负号

mod

求余

*

乘号

+

加号

/

除号

-

减号

其中乘除号优先级相同,加减号优先级相同。

2.字符串连接运算符

字符串连接运算符包括“+”和“&”。

+”号只能用在字符串之间,而不能混入其他类型数据;但是用“&”号时如果有其他类型数据,解释器会自动将它们先转换成字符串,所以后者用起来更灵活。

3.比较运算符

13-3列出比较运算符

13-3 比较运算符

运算符

运算

运算符

运算

=

等于

<=

小于等于,不大于

<>

不等于

>=

大于等于,不小于

<

小于

Is

引用同一个对象

>

大于

4. 逻辑运算符

13-4为逻辑运算符

13-4 逻辑运算符

运算符

运算

运算符

运算

Not

Xor

异或

And

Eqv

等价

Or

Imp

蕴含

(八)程序流控制语句

VBScript中的程序流控制语句是指条件执行语句和循环语句。主要包括If…Then…Else语句、Select Case语句、Do…Loop语句、While…Wend语句、For…Next语句、For Each…Next语句等。

1.       If…Then…Else语句

有以下几种用法。

1

格式:If<条件>Then<语句>

这是最简单的情况,若<条件>的逻辑值为True,则执行<语句>

2

格式:If<条件>Then

<语句块>

End If

<条件>True,则执行多个语句构成的<语句块>,最后用关键词End If

结束。

3

格式:If<条件>Then

<语句块1>

Else

<语句块2>

End If

<条件>True,则执行<语句块1>;否则,执行<语句块2>

4

格式:If<条件1>Then

<语句块1>

Else If<条件2>Then

<语句块2>

Else

<语句块n>

End If

多个条件控制:若<条件1>True,则执行<语句块1>;否则若<条件2>True,执行<语句块2>;以此类推。

2.       Select Case语句

虽然用上面的第4种语句形式可以处理多个条件的情况,但是如果各个条件是判断同一个表达式的值,就显得很烦琐,这时可以用Select Case语句。

Select Case<表达式>

Case<1>

<语句块1>

Case<2>

<语句块2>

Case Else

 <语句块n>

End Select

计算<表达式>,若结果为<1>则执行<语句块1>,否则若为<2>则执行<语句块2>,以此类推,若以上值均不对,则执行<语句块n>,最后用End Select语句结束。

3.       Do…Loop语句

要循环一段程序,最常用的是Do…Loop语句,有以下几种用法。

1

格式:

Do While<条件>

  <语句块>

Loop

判断<条件>是否为True,若是True,则执行<语句块>,否则结束循环。遇到Loop时返回到Do语句。

2

格式:

Do

  <语句块>

Loop While<条件>

与第一种用法类似,但是在判断循环条件之前会执行一次<语句块>

3

格式:

Do Until <条件>

  <语句块>

Loop

与第一种用法相反,只在<条件>False时才执行<语句>

从上面可以看到要循环执行的语句是放在Do…Loop之间的,循环的条件可以放在前面或后面,区别在于是否先执行一次<语句块>,而且条件判断可以使用WhileUntil,它们的特点正好相反。在循环执行过程中,如果需要立即跳出循环,可以使用Exit Do语句。

4.       While…Wend语句

除了Do…Loop语法之外,还可以用While…Wend实现类似功能,但不够灵活,因而不太常见。

格式:

While <条件>

  <语句块>

Wend

5.       For…Next语句

For…Next循环是带计算器的循环语句。在For…Next循环中需要设置一个变量作为计算器,循环指定次数。

格式:

For<计算器>=<初始值>To<终止值>Step<步长>

  <语句块>

Next

其中,<计算器>是任意一个变量,它在循环开始时被赋值为<初始值>,然后执行循环;遇到Next语句时返回到For语句,将<计算器>加上<步长>后与<终止值>判断,若为False,则进入下一步循环,若为True则结束循环。如果省略了Step<步长>部分,则默认的步长为1<步长>可以是一个正数,这时的计算器是递增的,与<终止值>比较时使用“<=”操作符;若<步长>是一个负数,则此时的计数器是递减的,与<终止值>比较时使用“>=”操作符。简而言之,无论递增还是递减,一旦计算器达到<终止值>就不再循环下去了。此外,与End Do类似,使用End For语句可以从循环体中跳出循环。

6.       For Each…Next语句

格式:

For Each<元素>In<数级/对象集合>

   <语句块>

Next<元素>

<元素>是用来枚举的变量,如果省略Next后面的<元素>也是可以的。如果对象集合中有至少一个元素,就会进入循环。任何时候如果需要退出循环,都可以使用Exit For语句。

三、在Internet Explorer中使用VBScript

这是一个简单的客户端验证的样例。HTML 代码的结果是一个文本框和一个按钮。

(一)简单验证:

使用 Visual Basic Scripting,您可以完成通常要在服务器上进行的大量窗体处理工作,也可以完成不能在服务器上进行的工作。

<HTML>

<HEAD><TITLE>简单验证</TITLE>

<SCRIPT LANGUAGE="VBScript">

<!--

Sub Submit_OnClick

  Dim TheForm

  Set TheForm = Document.ValidForm

  If IsNumeric(TheForm.Text1.Value) Then

    If TheForm.Text1.Value < 1 Or TheForm.Text1.Value > 10 Then

      MsgBox "请输入一个 1 10 之间的数字。"

    Else

      MsgBox "谢谢。"

    End If

  Else

    MsgBox "请输入一个数字。"

  End If

End Sub

-->

</SCRIPT>

</HEAD>

<BODY>

<H3>简单验证</H3><HR>

<FORM NAME="ValidForm">

请输入一个 1 10 之间的数字:

<INPUT NAME="Text1" TYPE="TEXT" SIZE="2">

<INPUT NAME="Submit" TYPE="BUTTON" VALUE="提交">

</FORM>

</BODY>

</HTML>

每次引用文本框时都应写出全称,即 Document.ValidForm.Text1。但是,当多次引用窗体控件时,可以按照以下步骤操作:首先声明一个变量,然后使用 Set 语句将窗体 Document.ValidForm 赋给变量 TheForm,这样就能使用 TheForm.Text1 引用文本框。常规的赋值语句(例如 Dim)在这里无效,必须使用 Set 来保持对对象的引用。

(二)验证后将数据传递回服务器:

简单验证样例使用的是普通按钮控件。如果使用 Submit 控件,所有数据都会被立即传送到服务器,示例将不会看到数据来进行检查。避免使用 Submit 控件使您可以检查数据,但不能向服务器提交数据。如果要提交数据则需要再添加一行代码,如下所示:

<SCRIPT LANGUAGE="VBScript">

<!--

Sub Submit_OnClick

  Dim TheForm

  Set TheForm = Document.ValidForm

  If IsNumeric(TheForm.Text1.Value) Then

    If TheForm.Text1.Value < 1 Or TheForm.Text1.Value > 10 Then

      MsgBox "请输入一个 1 10 之间的数字。"

    Else

      MsgBox "谢谢。"

      TheForm.Submit ' 数据输入正确,传递到服务器。

    End If

  Else

    MsgBox "请输入一个数字。"

  End If

End Sub

-->

</SCRIPT>

在数据输入正确时,代码调用窗体对象的 Submit 方法,将数据传递到服务器。除非在数据被传递到服务器之前判断其正误,否则服务器将处理数据,而不论其正确与否。

作者:Admin  
  • 上一篇:没有了
  • 下一篇:VB与DHTML
  • 相关文章
    • 没有相关文章
    本类热门
    本类推荐
    本类固顶
    • 没有
  • VB程序设计学习网站(赣南师范学院) © 2008 版权所有 All Rights Reserved.
  • 地址:江西省赣州市经济技术开发区 赣南师范学院数学与计算机科学学院 邮政编码:341000
    Email:ZQ188@163.com 技术支持QQ:87319633 移ICP备10086号
  • GnsySjxy! V2.4