4.1 课前指导
4.2 课堂教学
4.3 上机练习
4.4 课后作业第 4课 VBScript编程语言(一)
4.1 课前导读
4.1.1 VBScript介绍
4.1.2 客户端和服务器端编程语言
VBScript是一 种脚本 语言,属于 Microsoft
Visual Basic的简化版本 。 如果对 Visual Basic或
Visual Basic for Applications( VBA) 有所了解,
就会很快熟悉 VBScript。 如果没有学过 Visual Basic,
只要学会 VBScript,就能够使用所有的 Visual Basic
语言进行程序设计 。
4.1.1 VBScript介绍
VBScript是 Active Sever Pages的缺省语言,当然也可以在 ASP网页中使用其它脚本语言,如 Jscript
等 。 但是,本书中所有的 ASP例子程序都使用 VBScript。
可以在 HTML文件中直接嵌入 VBScript脚本,从而扩展 HTML,使它不仅仅是一种页面格式语言 。 带有
VBScript脚本的网页在每次下载到浏览器时都可以是不同的,而且可以对用户的操作作出反应 。
4.1.2 客户端和服务器端编程语言
VBScript既可以作为客户端编程语言,也可以作为服务器端编程语言 。
客户端编程语言是可以由浏览器解释执行的语言 。
当以客户端编程语言编制的程序被下载到一个兼容的浏览器中时,浏览器将自动执行该程序 。
客户端编程语言的优点是浏览器完成了所有的工作,这可以减轻服务器的负担 。 而且客户端程序运行起来比服务器端程序快得多 。 当一个浏览器的用户执行了一个操作时,不必通过网络对其作出响应,客户端程序就可以作出响应 。
但是,一般来说,可以解释 VBScript脚本的浏览器只有 Microsoft Internet Explorer,而 Netscape
Navigater将忽略 VBScript脚本 。 如果需要,可以使用
Java和 Jscript/JavaScript作为客户端编程语言 。
VBScript也可以作为服务器端编程语言 。 服务器端编程语言是在服务器上执行的语言 。 服务器为一个站点提供文件,而浏览器接收这些文件 。
当创建 ASP网页时,将用 VBScript作为服务器端编程语言 。 用 VBScript作为服务器端编程语言的好处是
VBScript不受浏览器的限制 。 VBScript脚本在网页通过网络传送给浏览器之前被执行,Web浏览器收到的只是标准的 HTML文件 。
4.2 课堂教学
4.2.1 在 HTML页面中添加 VBScript代码
4.2.2 VBScript的输入与输出
4.2.3 VBScript的数据类型
4.2.4 VBScript的变量
4.2.5 VBScript的数组变量
4.2.6 VBScript的常数
4.2.7 VBScript的运算符与表达式
4.2.8 VBScript的常用函数
4.2.9 语句
4.2.1 在 HTML页面中添加 VBScript代码在 HTML文件中,使用 <SCRIPT>标记引用 VBScript
代码 。 VBScript代码写在标记 <SCRIPT>? </SCRIPT>之间,标记 <SCRIPT>? </SCRIPT>可以出现在 HTML页面的任何地方 ( BODY或 HEAD部分之中 ) 。 然而最好将所有的一般目标脚本代码放在 HEAD部分中,以使所有脚本代码集中放置 。 这样可以确保在 BODY部分调用代码之前所有脚本代码都被读取并解码 。
<HTML>
<HEAD>
<Script Language="VBScript">
<!--
document.write("第一个 VBScript例子! ")
MsgBox("欢迎进入 VBScript世界! ")
-->
</Script>
</HEAD>
<BODY bgcolor=ivory>
<BR><BR><BR>
<CENTER>
<FONT face=楷体 size=10 color=blue>众志成城 </FONT>
</CENTER>
</BODY>
</HTML>
【 例 4-1】 第一个 VBScript例子 。
利用记事本编写如下代码:
以 4_1.htm或 4_1.asp为文件名存盘,存放位置为工作目录 H:\ASP例 \ch4。 ( 参见 1.2.3) 。 有以下两种方式可以执行 HTML文件 4_1.htm:
打开 Internet信息服务器窗口,找到虚拟目录
myasp\ch4,在右边的文件列表中选择文件 4_1.htm,
然后在,操作,菜单中选择,浏览,项;
打开浏览器,在地址栏中直接输入虚拟目录名及文件名:
http://127.0.0.1/myasp/ch4/4_1.htm
在浏览器上的 显示效果 。
说明:
① 代码的开始和结束部分都有 <SCRIPT>标记 。
LANGUAGE属性用于指定所使用的脚本语言 。 由于浏览器能够使用多种脚本语言,所以必须在此指定所使用的脚本语言 。
② VBScript代码被嵌入在注释标记 ( <!--和 -->)
中 。 这样能够避免不能识别 <SCRIPT>标记的浏览器将代码显示在页面中 。
③ SCRIPT块可以出现在 HTML页面的任何地方
( BODY或 HEAD部分之中 ) 。 然而最好将所有的一般目标脚本代码放在 HEAD部分中,以使所有脚本代码集中放置 。 这样可以确保在 BODY部分调用代码之前所有脚本代码都被读取并解码 。 但是当脚本代码作为对象的事件代码时,则不必把它放在 HEAD部分中,可以就近放在对象附近 。 如下例所示 。
【 例 4-2】 以下代码将脚本代码放在按钮对象的定义之后以响应按钮的单击事件:
<HTML>
<HEAD><TITLE>简单验证 </TITLE></HEAD>
<BODY><H3>简单验证 </H3><HR>
请输入任何数据:
<INPUT name="Text1" type="TEXT" size="20"><P>
<INPUT type ="Button" name ="Button1" value="确认 "><P>
<SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">
MsgBox "您输入的数据是," & Text1.Value
</SCRIPT>
</BODY>
</HTML> 在浏览器上的 显示效果 。
说明:
① 代码中使用了内部控件标记 <INPUT>,其属性
Type指定控件的类型:文本框 Text和命令按钮 Button。
其详情参见第 6课 。
② 控件的事件代码可以单独放在过程中,如按钮
Button1的单击 ( onclick) 事件代码:
<SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">
MsgBox "您输入的数据是," & Text1.Value
</SCRIPT>
可以改写为:
<SCRIPT LANGUAGE="VBScript">
Sub Button1_onClick
MsgBox "您输入的数据是," & Text1.Value
End Sub
</SCRIPT>
③ 大多数脚本代码在 Sub或 Function过程中,仅在其他代码要调用它时执行 。 然而,也可以将
VBScript代码放在过程之外,SCRIPT块之中 。 这类代码仅在 HTML页面加载时执行一次 。 这样就可以在加载
Web页面时初始化数据或动态地改变页面的外观 。
4.2.2 VBScript的输入与输出
1,信息框函数
2,输入框函数
VBScript中实现信息输入与输出的方法有两种,
一种是使用 Document对象及其子对象的方法和属性,
一种是使用 VBScript的内置函数 。
1,信息框函数信息框函数 ( MsgBox) 是常用的输出信息的函数,
例 4-1和 4-2中都使用了该函数 。 MsgBox函数在对话框中显示信息,等待用户单击按钮,并返回一个整数以标明用户单击了哪个按钮 。 其语法格式为:
变量 = MsgBox( 〈 信息内容 〉 [,〈 对话框类型 〉
[,〈 对话框标题 〉 ]])
说明:
① 〈 信息内容 〉 指定在对话框中出现的文本,在信息内容中使用硬回车符 ( CHR(13)) 可以使文本换行 。
对话框的高度和宽度随着信息内容的增加而增加,最多可有 1024个字符 。
② 〈 对话框类型 〉 指定对话框中出现的按钮和图标,一般有三个参数 。 其取值和含义见表 4-1,表 4-2、
表 4-3。
表 4-1 参数 1 —— 出现按钮值 常量 说明
0 vbOKOnly 确定按钮
1 vbOKCancel 确定和取消按钮
2 vbAbortRetryIgnore 终止、重试和忽略按钮
3 vbYesNoCancel 是、否和取消按钮
4 vbYesNo 是和否按钮
5 vbRetryCancel 重试和取消按钮表 4-2 参数 2 —— 图标类型值 常量 说明
16 vbCritical 停止图标
32 vbQuestion 问号(?)图标
48 vbExclamation 感叹号(!)图标
64 vbInformation 信息图标表 4-3 参数 3 —— 默认按钮值 常量 说明
0 vbDefaultButton1 指定默认按钮为第一按钮
256 vbDefaultButton2 指定默认按钮为第二按钮
512 vbDefaultButton3 指定默认按钮为第三按钮上述三种参数值可以相加以达到所需要的样式 。
③ 〈 对话框标题 〉 指定对话框的标题 。 下述代码将显示如图 4-3所示的对话框:
图 4-3 信息对话框
④ Msgbox( )返回的值指明了在对话框中选择哪一个按钮,见表 4-4。
表 4-4 Msgbox函数的返回值返回值 常量 按钮
1 vbOK 确定按钮
2 vbCancel 取消按钮
3 vbAbort 终止按钮
4 vbRetry 重试按钮
5 vbIgnore 忽略按钮
6 vbYes 是
7 vbNo 否
⑤ 代码中的值可以是数值,也可以是数值常量 。
⑥ 如果省略了某些可选项,必须加入相应的逗号分隔符 。
⑦ 若不需要返回值,则可以使用 MsgBox的命令形式:
MsgBox〈 信息内容 〉 [,〈 对话框类型 〉 [,〈 对话框标题 〉 ]]
在程序运行的过程中,有时需要显示一些简单的信息如警告或错误等,此时可以利用,信息对话框,
来显示这些内容 。 当用户接收到信息后,可以单击按钮来关闭对话框,并返回单击的按钮值 。
2,输入框函数输入框函数 ( InputBox) 函数显示一个能接受用户输入的对话框,并返回用户在对话框中输入的信息 。
其语法格式为:
变量 = InputBox( 〈 信息内容 〉 [,〈 对话框标题 〉 ]
[,〈 默认内容 〉 ])
说明:
① 〈 信息内容 〉 指定在对话框中出现的文本 。
在 〈 信息内容 〉 中使用硬回车符 ( CHR(13)) 可以使文本换行 。 对话框的高度和宽度随着 〈 信息内容 〉 的增加而增加,最多可有 1024个字符 。
② 〈 对话框标题 〉 指定对话框的标题 。
③ 〈 默认内容 〉 可以指定输入框的文本框中显示的默认文本 。 如果用户单击,确定,按钮,文本框中的文本 ( 字符串 ) 将返回到变量中,若用户单击
,取消,按钮,返回的将是一个零长度的字符串 。
下述代码将显示如图 4-4所示的输入框:
aa = InputBox("信息内容 ","对话框标题 ","默认内容 ")
注意:如果省略了某些可选项,必须加入相应的逗号分隔符 。
图 4-4 输入框
4.2.3 VBScript的数据类型
VBScript只有一种数据类型,称为 Variant( 变体类型 ) 。 因为 Variant是 VBScript中唯一的数据类型,所以它也是 VBScript中所有函数返回值的数据类型 。 Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息 。
最简单的 Variant可以包含数字或字符串信息 。
Variant用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理 。 也可以将数字包含在引号 ( " ") 中使其成为字符串 。
除简单数字或字符串以外,Variant可以进一步区分数值信息的特定含义 。 例如使用数值信息表示日期或时间 。 此类数据在与其他日期或时间数据一起使用时,结果也总是表示为日期或时间 。 从 Boolean值到浮点数,数值信息是多种多样的 。
Variant包含的数值信息类型称为子类型 。 大多数情况下,可将所需的数据放进 Variant中,而
Variant也会按照最适用于其包含的数据的方式进行操作 。
表 4-5显示了 Variant包含的数据子类型 。
可以使用转换函数来转换数据的子类型 。 另外,
可使用 VarType函数返回数据的 Variant子类型 。
表 4-5 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 包含错误号。
4.2.4 VBScript的变量
1,变量的命名规则
2,声明变量
3,变量的作用域与存活期
4,给变量赋值变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储脚本运行时可更改的程序信息 。 例如,可以创建一个名为 ClickCount的变量来存储用户单击 Web页面上某个对象的次数 。 使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值 。 在
VBScript中只有一个基本数据类型,即 Variant,因此所有变量的数据类型都是 Variant。
1,变量的命名规则变量命名必须遵循 VBScript的标准命名规则:
① 第一个字符必须是字母;
② 不能包含嵌入的句点;
③ 长度不能超过 255个字符;
④ 在被声明的作用域内必须唯一 。
2,声明变量声明变量的一种方式是使用 Dim语句,Public语句和 Private语句在脚本中显式声明变量,并分配存储空间 。 声明变量的语法为:
{Dim | Private | Public}〈 变量名 〉 [,〈 变量名 2〉 ] [,
〈 变量名 3〉 ]
说明:
① Public语句变量可用于全部脚本中的所有过程;
用 Dim声明的 Script级变量可用于脚本中的所有过程,
过程级变量只能用于过程中; Private语句变量只能在声明该变量的脚本中使用 。
② 〈 变量名 〉 遵循 VBScript的标准命名规则 。
例如:
Dim DegreesFahrenheit
声明多个变量时,使用逗号分隔变量 。 例如:
Dim Top,Bottom,Left,Right
另一种方式是通过直接在脚本中使用变量名这一简单方式隐式声明变量 。 这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果 。 因此,最好使用 Option Explicit语句显式声明所有变量,并将其作为脚本的第一条语句 。
注意,Option Explicit语句的位置很特殊,必须把 Option Explicit语句作为一个 ASP网页的起始语句之一,即它必须出现在任何 HTML标识或其它 VBScript
命令之前,否则,该语句将被视为非法语句 。
3,变量的作用域与存活期变量的作用域由声明它的位置决定 。 如果在过程中声明变量,则只有该过程中的代码可以访问或更改变量值,此时变量具有局部作用域并且是过程级变量 。
如果在过程之外声明变量,则该变量可以被脚本中所有过程所识别,称为 Script级变量,具有脚本级作用域 。
变量存在的时间称为存活期 。 Script级变量的存活期从被声明的一刻起,直到脚本运行结束 。 过程级变量的存活期仅是过程运行的时间,该过程结束后,
变量随之消失 。 可以在不同过程中使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别 。
4,给变量赋值使用赋值语句可以将指定的值赋给某个变量,赋值语句的一般格式为:
〈 名称 〉 =〈 值 〉
说明:
① 〈 名称 〉 是任何变量或可写的属性; 〈 值 〉 可以是任何数值或字符串文字,常数或表达式 。
② 赋值语句是先计算 ( 表达式 ),然后再赋值 。
将计算所得的表达式值赋给,=” 左边的变量或属性 。
③ 赋值号,=” 不是数学上的等号 。 a = 5应读作
,将数值 5赋给变量 a” 或是,使变量 a的值等于 5”,
可以理解为,a? 5。
4.2.5 VBScript的数组变量
1,数组的声明
2,动态数组
1,数组的声明数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。
声明数组的语法为:
{Dim | Private | Public | ReDim}〈 变量名 〉 (〈 维数 〉 )
[,〈 变量名 2〉 (〈 维数 2〉 )]?
说明:
① 〈 维数 〉 是指数组变量的维数,最多可以声明
60维的数组 。 〈 维数 〉 参数使用以下语法:
〈 上界 〉 [,〈 上界 2〉 ]?
② 数组的下界总是 0。 如下面的命令代码声明了一个包含 11个元素的一维数组:
Dim A(10)
虽然括号中显示的数字是 10,但由于在 VBScript
中所有数组的下界都是 0,所以这个数组实际上包含 11
个元素 。 通常,VBScript中数组元素的数目总是括号中显示的数目加 1。 这种数组被称为固定大小的数组 。
在数组中使用索引为数组的每个元素赋值 。 从 0到
10,将数据赋给数组的元素,如下所示:
A(0) = 256
A(1) = 324
A(2) = 100
.,,
A(10) = 55
与此类似,使用索引可以检索到所需的数组元素的数据 。 例如:
S = A(8)
数组并不仅限于一维 。 数组的维数最大可以为 60
( 尽管大多数人不能理解超过 3或 4的维数 ) 。 声明多维数组时用逗号分隔括号中每个表示数组大小的数字 。
在下例中,MyTable变量是一个有 6行和 11列的二维数组:
Dim MyTable(5,10)
在二维数组中,括号中第一个数字表示行的数目,
第二个数字表示列的数目 。
2,动态数组也可以声明动态数组,即在运行脚本时大小发生变化的数组 。 对动态数组的最初声明使用 Dim语句或
ReDim语句,括号中不包含任何数字 。 例如:
Dim MyArray()
ReDim AnotherArray()
要使用动态数组,必须随后使用 ReDim确定维数和每一维的大小 。 在下例中,ReDim将动态数组的初始大小设置为 25,而后面的 ReDim语句将数组的大小重新调整为 30,同时使用 Preserve关键字在重新调整大小时保留数组的内容 。
ReDim MyArray(25)
.,,
ReDim Preserve MyArray(30)
重新调整动态数组大小的次数是没有任何限制的,
尽管将数组的大小调小时,将会丢失被删除元素的数据 。
4.2.6 VBScript的常数常数是指具有一定含义的名称,用于代替数字或字符串,其值从不改变 。 VBScript定义了许多内部常数,也允许程序员创建用户自定义常数 。
使用 Const语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值 。 其语法格式为:
[Public | Private] Const〈 常数名 〉 =〈 表达式 〉
说明:
① Public可选项用于在 Script级中声明可用于所有脚本中所有过程的常数,不允许在过程中使用;
Private可选项用于在脚本级中声明只可用在声明所在的脚本中的常数,不允许在过程中使用 。
在默认情况下常数是公用的 。 过程中的常数总是专有的,其可见性无法改变 。 Script中,可用
Private关键字来改变脚本级常数可见性的默认值 。
② 〈 常数名 〉 必选项为常数的名称,根据标准的变量命名规则 。
③ 〈 表达式 〉 必选项 。 文字或其他常数,或包括除 Is外的所有算术运算符和逻辑运算符的任意组合 。
常数声明中不能使用变量,用户自定义的函数或
VBScript内部函数 。 另外也不能从含有运算符的表达式中创建常数,即只允许使用简单常数 。
④ 要在同一行中声明若干个常数,可用逗号将每个常数赋值分开 。 用这种方法声明常数时,如果使用了 Public或 Private关键字,则该关键字对该行中所有常数都有效 。
⑤ 在 Sub或 Function过程中声明的常数是该过程的局部常数 。 在过程外声明的常数是声明所在的脚本中的全局常数 。 可以在任何使用表达式的地方使用常数 。
下面代码说明如何使用 Const语句:
Const MyString = "这是一个字符串 。 "
Const MyAge = 49
请注意字符串文字包含在两个引号 ( " ") 之间 。
这是区分字符串型常数和数值型常数的最明显的方法 。
日期文字和时间文字包含在两个井号 ( #) 之间 。 例如:
Const CutoffDate = #6-1-97#
最好采用一个命名方案以区分常数和变量 。 这样可以避免在运行脚本时对常数重新赋值 。 例如,可以使用,vb” 或,con” 作常数名的前缀,或将常数名的所有字母大写 。 将常数和变量区分开可以在开发复杂的脚本时避免混乱 。
4.2.7 VBScript的运算符与表达式
1,算术运算符
2,比较运算符
3,连接运算符
4,逻辑运算符
5,运算符优先级运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,而参与运算的数据称为操作数 。
表达式用来表示某个求值规则,它由运算符和配对的圆括号将值,常数,变量,函数,对象等操作数以合理的形式组合而成 。
表达式可用来执行运算,操作字符或测试数据,
每个表达式都产生唯一的值 。 表达式的类型由运算符的类型决定 。 VBScript有一套完整的运算符,包括算术运算符,比较运算符,连接运算符和逻辑运算符 。
1,算术运算符
VBScript有 7个算术运算符,见表 4-2。 在这 7个算术运算符中,除取负,-” 是单目运算符外,其他均为双目运算符 。 加 ( +),减 ( -),乘 ( *),浮点除法
( /),取负 ( -),乘方 ( ^) 运算的含义与数学中基本相同 。
表 4-2 算术运算符运算符 名称 表达式例子 运算符 名称 表达式例子
^ 乘方 a ^ b * 乘法 a * b
/ 浮点除法 a / b \ 整数除法 a \ b
+ 加法 a + b - 减法 a – b
Mod 模运算 a Mod b – 取负 – c
说明:
① / 和 \ 的区别,1 / 2 = 0.5,1 \ 2 = 0。
整除号 \ 用于整数除法,在进行整除时,如果参加运算的数据含有小数,首先将它们四舍五入,使其成为整型数或长整型数,然后再进行运算,其结果截尾成整型数 。
② 模运算符 Mod用来求整型除法的余数 。 其结果为第一个操作数整除第二个操作数所得的余数 。 例如:
9 Mod 7的值为 2。 若表达式为,25.58 Mod 6.91,则首先把 25.58和 6.91分别取整为 26和 7,其值 5。
③ 进行除法 ( 包括整除 ) 运算时,除数为 0或进行乘幂运算时指数为负数而底数为 0时,都会产生算术溢出的错误信息 。
【 例 4-3】 华氏温度和摄氏温度相互转换的网页 。 利用输入框输入温度,利用信息框输出转换后的温度,输入一个华氏温度可以得到相应的摄氏温度,而输入一个摄氏温度则可以得到相应的华氏温度 。
3259 CF
)32(95 FC
分析:设 C为摄氏温度,F为华氏温度,则有:
因此可以得到:
编写如下 HTML代码:
<HTML>
<HEAD><TITLE>温度转换 </TITLE></HEAD>
<BODY><H3 align = center>华氏温度和摄氏温度相互转换 </H3><HR>
<INPUT TYPE="Button" NAME="Button1" VALUE="摄氏转华氏 ">
<INPUT TYPE="Button" NAME="Button2" VALUE="华氏转摄氏 ">
<SCRIPT FOR="Button1" EVENT="onClick" LANGUAGE="VBScript">
c = InputBox("请输入摄氏温度值,","摄氏转华氏 ",0)
f = 32 + 9 * c / 5
MsgBox("摄氏 " & c & "度 = 华氏 " & f & "度 ")
</SCRIPT>
<SCRIPT FOR="Button2" EVENT="onClick" LANGUAGE="VBScript">
f = InputBox("请输入华氏温度值,","华氏转摄氏 ",0)
c = 5 * (f - 32) / 9
MsgBox "华氏 " & f & "度 = 摄氏 " & c & "度 "
</SCRIPT>
</BODY>
</HTML>
注意:代码中的双引号,逗号和其他运算符必须是英文字符 。 在浏览器中代码的 执行结果 。
2,比较运算符
VBScript有 7个比较运算符,用于比较表达式,其说明见表 4-3。
表 4-3 比较运算符运算符 True 如果 false 如果 Null 如果
< 表达式 1 < 表达式 2 表达式 1 >= 表达式 2 表达式 1 or 表达式 2 = Null
<= 表达式 1 <= 表达式 2 表达式 1 > 表达式 2 表达式 1 or 表达式 2 = Null
> 表达式 1 > 表达式 2 表达式 1 <= 表达式 2 表达式 1 or 表达式 2 = Null
>= 表达式 1 >= 表达式 2 表达式 1 < 表达式 2 表达式 1 or 表达式 2 = Null
= 表达式 1 = 表达式 2 表达式 1 <> 表达式 2 表达式 1 or 表达式 2 = Null
<> 表达式 1 <> 表达式 2 表达式 1 = 表达式 2 表达式 1 or 表达式 2 = Null
说明:
① 当比较两个表达式时,或许不容易确定比较的表达式是作为数值或作为字符串 。 表 4-4描述了如何对表达式进行比较,以及比较的结果 。
表 4-4 比较的子类型如果 则两个表达式都是数值 执行数值比较。
两个表达式都是字符串 执行字符串比较。
一个表达式是数值,另一个是字符串 数值表达式小于字符串表达式。
一个表达式为 Empty而另一个为数值 执行数值比较,0作为 Empty表达式的值。
一个表达式为 Empty而另一个为字符串执行字符串比较,零长度的字符串( "")
作为 Empty表达式的值。
两个表达式都为 Empty 两个表达式相等。
3,连接运算符连接运算符用于连接两个或更多的字符串 。
VBScript只有一种连接运算符,即,&”,其语法格式为:
〈 字符串 1〉 &〈 字符串 2〉 [&〈 字符串 3〉 ]
当两个字符串用连接运算符连接起来后,第二个字符串直接添加到第一个字符串的尾部,结果是一个更长的,包含两个源字符串的全部内容的字符串 。 如果要把多个字符串连接起来,每两个字符串之间都要用,&” 号分隔 。
例如:
"ABC123" & "666xyz" ' 连接后结果为,"ABC123666xyz"
"计算机 " & "世界 " ' 连接后结果为,"计算机世界 "
"123 45" & "abcd" & " xyz " ' 连接后结果为,"123 45abcd xyz "
除用,&” 把两个表达式强制连接成一个字符串外,还可以用,+” 把两个字符串连接成一个字符串 。
为了避免与算术加法运算符产生混淆,应该用,&”
号 。 另外,,&” 会自动将非字符串子类型的数据转换成字符串后再进行连接,而,+” 则不能自动转换 。
例如:
123 & 456 & "abc" ' 连接后结果为,"123456abc"
4,逻辑运算符
VBScript提供的布尔运算符有,And,Or,Not、
Xor,Eqv,Imp等 6种,见表 4-5。 其中常用的为前三种:
表 4-5 逻辑运算符运算符 名称 例子 说明
And 与 (4 > 5) And (3 < 4) 值为,False,两个表达式的值均为真,结果才为真,否则为假。
Or 或 (4 > 5) Or (3 < 4) 值为,True,两个表达式中只要有一个值为真,结果就为真。
Not 非 Not (1 > 0) 值为,False,由真变假或由假变真,取“反”
Xor 逻辑异或 10 > 8 Xor 8 > 6 值为,False,两个表达式的值均为真或假,整个表达式为假,否则为真。
Equ 逻辑等价 10 > 8 Equ 8 > 6 值为,True,两个表达式的值同为真或假,整个表达式为真,否则为假。
Imp 逻辑隐含 10 > 8 Imp 6 > 8 值为,False,第一个表达式为真的同时第二个表达式为假,整个表达式为假,否则为真。
说明:
① 逻辑运算符两侧若有数值数据出现,则将数值数据转换为二进制数 ( 补码形式 ) 进行按位运算 。 此时,1为真,0为假 。
② 逻辑运算的结果见表 4-6( 真值表 ),
表 4-6 逻辑运算真值表
A b a And b a Or b Not a a Xor b a Equ b a Imp b
True True True True False False True True
True False False True False True False False
False True False True True True False True
False False False False True False True True
5,运算符优先级当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级 。 可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分 。 运算时,总是先执行括号中的运算符,然后再执行括号外的运算符 。 但是,在括号中仍遵循标准运算符优先级 。
当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符 。 所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符 。 运算符的优先级见表 4-7。
表 4-7 运算符的优先顺序优先顺序 运算符类型 运算符
1
算术运算符
^(指数运算)
2 -(负数)
3 *,/(乘法和除法)
4 \(整数除法)
5 Mod(求余运算)
6 +,–(加法和减法)
7 连接运算符 &(字符串连接)
8 比较运算符 =,<>,<,>,<=,>=,Is
9
逻辑运算符
Not
10 And
11 Or
12 Xor
13 Equ
14 Imp
说明:
① 同级运算按照它们从左到右出现的顺序进行计算 。
② 可以用括号改变优先顺序,强令表达式的某些部分优先运行 。
③ 括号内的运算总是优先于括号外的运算,在括号之内,运算符的优先顺序不变 。
4.2.8 VBScript的常用函数
1,数学运算函数
2,字符串函数
3,日期和时间函数
4,随机数语句和函数
5,数据类型转换函数
6,测试函数函数的概念与一般数学中函数的概念没有什么根本区别 。 函数是一种特定的运算,在程序中要使用一个函数时,只要给出函数名并给出一个或多个参数,
就能得到它的函数值 。 在 VBScript中,有两类函数:
内部函数和用户定义函数 。 用户定义函数是由用户自己根据需要定义的函数 。 内部函数也称标准函数,
VBScript提供了大量的内部函数 。 在这些函数中,有些是通用的,有些则与某种操作有关 。 这些函数可分为:转换函数,数学函数,字符串函数,日期时间函数,随机函数 。 下面列出一些常用的内部函数,其具体用法参见附录 B。
1,数学运算函数数学运算函数用于各种数学运算 。 常用数学运算函数见表 4-8。
表 4-8 常用数学运算函数函数 说明 函数 说明
Sin 返回弧度的正弦 Log 返回一个数值的自然对数
Cos 返回弧度的余弦 Sgn 返回数的符号值
Atn 返回用弧度表示的反正切值 Sqr 返回数的平方根
Tan 返回弧度的正切 Int 返回不大于给定数的最大整数
Abs 返回数的绝对值 Fix 返回数的整数部分
Exp 返回 e的指定次幂
2,字符串函数
VBscript提供了大量的字符串函数,具有强大的字符串处理能力,见表 4-9。
表 4-9 常用字符串函数函数 说明 函数 说明
Ltrim 返回删除字符串左端空格后的字符串 Instr 返回字符串在给定的字符串中出现的开始位置
Rtrim 返回删除字符串右端空格后的字符串 Space 返回由指定数目空格字符组成的字符串
Trim 返回删除字符串前导和尾随空格后的字符串 String 返回包含一个字符重复指定次数的字符串
Left 返回从字符串左边开始的指定数目的字符 Lcase 返回以小写字母组成的字符串
Right 返回从字符串右端开始的指定数目的字符 Ucase 返回以大写字母组成的字符串
Mid 返回从字符串指定位置开始的指定数目字符 Len 返回字符串的长度
3,日期和时间函数时间和日期函数使程序能向用户显示日期和时间,
提供某个事件何时发生及持续时间长短的信息 。 时间和日期函数见表 4-10。
表 4-10 常用日期和时间函数函数 说明 函数 说明
Now 返回系统日期和时间( yy-mm-dd hh:mm:ss) Hour 返回小时( 0~ 23)
Date 返回当前日期( yy-mm-dd) Minute 返回分钟( 0~ 59)
Day 返回月中第几天( 1~ 31) Second 返回秒( 0~ 59)
WeekDay 返回是星期几( 1~ 7) Timer 返回从午夜算起已过的秒数
Month 返回一年中的某月( 1~ 12) Time 返回当前时间( hh:mm:ss)
Year 返回年份( yyyy)
4,随机数语句和函数在测试,模拟和游戏程序中,经常要使用随机数,
随机数语句和函数见表 4-11。
表 4-11 随机数函数和语句函数 返回子类型 函数 返回子类型
Asc Integer CLng Long
Cbool Boolean CSng Single
Cbyte Byte CStr String
Ccur Currency Chr String
Cdate Date Hex String
CDbl Double Oct String
Cint Integer
每个类型转换函数都可以强制将一个表达式转换成某种特定数据子类型 。
例如:
Area = CDbl(txtLength.Text * txtWidth.Text)
注意:如果传递给函数的参数超过转换目标数据类型的范围,将发生错误 。 例如,如果想把 Long型数转换成 Integer型数,那么,Long型数必须在 Integer
数据类型的有效范围之内 。 一般不必了解 VBScript为特殊变量使用哪一种变量子类型,若想了解 VBScript
正在使用哪种变量子类型,可使用 VarType函数 。
6,测试函数在 VBScript中,还提供了一些测试函数,用来测试传入参数的各种形态 。 测试函数见表 4-13。
表 4-13 测试函数函数 说明 函数 说明
IsArray 返回 Boolean值指明某变量是否为数组 IsDate 返回 Boolean值指明某表达式是否可以转换为日期
IsEmpty 返回 Boolean值指明变量是否已初始化 Null
返回 Boolean值,指明表达式是否不包含任何有效数据 (Null)。
IsNumeric 返回 Boolean值指明表达式的值是否为数字 IsObject 返回 Boolean值指明表达式是否引用了有效的对象说明:
Null值表示变量不包含有效数据 。 Null与 Empty不同,后者表示变量未经初始化 。 Null与零长度字符串
("")也不同,零长度字符串往往指的是空串 。
在某些情况下想使表达式取值为 True,例如 If
Var=Null和 If Var<>Null,但它们通常总是为 False。
这是因为任何包含 Null的表达式本身就为 Null,所以表达式的结果为 False。 此时使用 IsNull函数可以判断表达式是否包含 Null值 。 例如:下面的示例利用
IsNull函数决定变量是否包含 Null:
Dim MyVar,MyCheck
MyCheck = IsNull(MyVar) ' 返回 False。
MyVar = Null ' 赋为 Null。
MyCheck = IsNull(MyVar) ' 返回 True。
MyVar = Empty ' 赋为 Empty。
MyCheck = IsNull(MyVar) ' 返回 False。
4.2.9 语句
1,程序语句
2,语句的书写规则
3,命令格式中的符号约定
1,程序语句
VBScript程序中的一行代码称为一条程序语句,
简称为语句 。 语句是执行具体操作的指令,每个语句行以回车 ( Enter) 键结束 。 一个语句行的长度最多不能超过 1023个字符 。 程序语句是 VBScript关键字,属性,函数,运算符以及能够被浏览器识别符号的任意组合 。
建立程序语句时必须遵从的构造规则称为语法 。
编写正确程序语句的前提,就是学习语言元素的语法,
并在程序中使用这些元素正确地处理数据 。
2,语句的书写规则在编写程序代码时要遵循一定的规则,这样写出的程序既能被 VBScript正确地识别,又能增加程序的可读性 。
(1) 一行中的多条语句一般情况下,输入程序时要求一行写一个语句 。
但是也可以使用复合语句行,即把几个语句放在一个语句行中,语句之间用冒号,,” 隔开 。 例如:
Text1.Text = "Hello",Red = 255,A = Red
(2) 语句的续行当一条语句很长时,在记事本窗口阅读程序时将不便查看,使用滚动条又比较麻烦 。 这时,就可以使用续行功能,用续行符,_” 将一个较长的语句分为多个程序行 。 例如:
strMyStr="当前用户为," & _
strUsername
续行符只能出现在行尾 。
3,命令格式中的符号约定为了便于解释语句,方法和函数,本教程语句,
方法和函数格式中的符号采用统一约定 。 在各语句,
方法,函数的语法格式和功能说明中,以尖括号 〈 〉,
方括号 [ ],花括号 { },竖线 |,逗号加省略号,...、
省略号,..作为专用符号,这些符号的含义见表 4-14。
符号 含义
〈 〉 为必选参数表示符。尖括号中的中文提示说明,由使用者根据问题的需要提供具体参数。如果缺少必选参数,语句则发生语法错误。
[ ] 为可选参数表示符。方括号中的内容选与不选由用户根据具体情况决定,且都不影响语句本身的功能。如省略,则默认为缺省值。
| 为多中取一表示符,含义为“或者选择”。竖线分隔多个选择项,必须选择其中之一。
{ } 包含多中取一的各项。
,..,表示同类项目的重复出现。
..,表示省略了在当时叙述中不涉及的部分。
表 4-14 约定的符号注意:这些专用符号和其中的提示,不是语句行或函数的组成部分 。 在输入具体命令或函数时,上面的符号均不可作为语句中的成分输入计算机,它们只是语句,函数格式的书面表示 。 例如:
If〈 条件 〉 Then [〈 语句 1〉 ] [ Else〈 语句 2〉 ]
4.3 上机练习
【 练习 4-1】,鸡兔同笼,问题 。 鸡有 2只脚,兔有 4
只脚,如果已知鸡和兔的总头数为 h,总脚数为 f。 问笼中鸡和兔各有多少只 ( 如图所示 )?

fyx
hyx
42

2
2
2
4
hfy
fhx
分析:设笼中有鸡 x只,兔 y只,由条件可得方程组:
解方程组得:
在记事本中编写如下代码:
<HTML>
<HEAD><TITLE>鸡兔同笼 </TITLE></HEAD>
<BODY><H3 align = center>,鸡兔同笼,问题 </H3><HR>
鸡有 2只脚,兔有 4只脚,如果已知鸡和兔的总头数为 h,
总脚数为 f。 问笼中鸡和兔各有多少只?
<INPUT TYPE="Button" NAME="Button2" VALUE="请输入 h与 f值 ">
<SCRIPT FOR="Button2" EVENT="onClick" LANGUAGE="VBScript">
h = InputBox("鸡和兔的总头数 ","请输入 ",0)
f = InputBox("鸡和兔的总脚数 ( 偶数 ) ","请输入 ",0)
x = (4 * h - f) / 2
y = (f - 2 * h) / 2
MsgBox("设笼中鸡和兔的总头数为 " & h & ",总脚数为 " & f &_
"。 " & chr(13) & "则笼中鸡有 " & x & "只,兔有 " & y & "只 。 ")
</SCRIPT>
</BODY>
</HTML>
打开浏览器,在网页中单击按钮将依次弹出两个输入框接受输入的数据:
图 4-7 输入框输入 h与 f的值后,VBScript将算出鸡和兔的数目,
显示结果 。