,ASP程序设计,1
第 3章 VBScript脚本语言
3.1 VBScript概述
3.2 VBScript的基本数据类型及输入输出
3.3 VBScript的表达式和运算符
3.4 VBScript的控制结构
3.5 VBScript的函数和子过程
3.6 VBScript的内部库函数
3.7 VBScript的对象和事件
3.8 VBScript纠错处理
,ASP程序设计,2
3.1 VBScript概述
3.1.1 VBScript概述
3.1.2 VBScript与 JavaScript
3.1.3 VBScript脚本类型
3.1.4 VBScript实例
,ASP程序设计,3
3.1 VBScript概述静态网页 的功能有很大的局限性,因此具有强大的 交互能力 的 动态网页 得到了广泛的流行。
VBScript是目前进行 动态网页 开发中必不可少的一种 脚本语言 。
,ASP程序设计,4
3.1.1 VBScript概述
HTML语言编写的网页是一种 静态文档 。
脚本语言和 HTML标记一起编写 动态网页,
这种网页可以被服务器执行。
脚本语言 是介于 HTML和 Java,Visual
Basic等编程语言之间的语言,可使用任何文本编辑器编写,保存为纯 ASCII文本文件。
目前比较流行的脚本语言主要有 两种,即
VBScript和 JavaScript。
,ASP程序设计,5
3.1.2 VBScript与 JavaScript
在 IIS中设定 。
在网页 中指定脚本语言
<% @LANGUAGE=VBScript%>或
<% @LANGUAGE=VBScript%>
利用 <Script>设定脚本语言,例如:
<Script language="Vbscript">
ASP中的 缺省语言 是 VBScript。
脚本语言的 设置方法 主要有:
,ASP程序设计,6
3.1.3 VBScript脚本类型
1,客户端脚本客户端脚本由 浏览器 解释执行。
<SCRIPT LANGUAGE="language" [EVENT="event"]
[FOR="object"]>
<!--
脚本代码
-->
</SCRIPT>
LANGUAGE,指定使用哪一种脚本语言
EVENT,指定与此段脚本相关联的事件
FOR,指定与事件相关联的对象
,ASP程序设计,7
3.1.3 VBScript脚本类型
2,服务器端脚本在 Web服务器 上执行,
由服务器根据脚本的执行结果生成相应的
HTML页面并发送到客户端浏览器中并显示,
不受浏览器的限制 。
<SCRIPT
LANGUAGE=VBScript
RUNAT=server>
<!—
脚本代码
-->
</SCRIPT>
<%
VBScript脚本程序片段
%>
,ASP程序设计,8
3.1.4 VBScript实例
,ASP程序设计,9
3.2 基本数据类型及输入输出
3.2.1 简单编程约定
3.2.2 基本数据类型及其子类型
3.2.3 变量
3.2.4 常量
3.2.5 数组
3.2.6 基本输入输出
,ASP程序设计,10
3.2.1 简单编程约定
1,程序中的层次感和注释一般格式为:
格式一:
Rem 注释内容格式二:
′ 注释内容或语句 ′ 注释内容两种 表现形式:
通过使用 Rem语句采用西文 单引号,′,
,ASP程序设计,11
3.2.1 简单编程约定
2,单行文本转成多行使用续行符,-” ( 由一个空格和一个下划线组成 ),将长的语句分成多行书写 。
3,使用不同进制的数字在 VBScript中,可以用默认的十进制来表示数字,还使用十六进制或八进制来表示数字 。
,ASP程序设计,12
3.2.2 基本数据类型及其子类型
VBScript只有一种 特殊的数据类型,即变体( Variant) 数据类型,它可以随着变量 被使用方式的不同 而包含不同的数据信息,会根据不同的应用环境,将变量区别对待。
由变体类型 引申 出来的类型称为子类型。
,ASP程序设计,13
3.2.3 变量变量 是指计算机中用来表示 内存位置 的一种 符号,在内存中存储着程序所需的各种数据,脚本执行时这个内存中的数据 可以改变 。
,ASP程序设计,14
3.2.3 变量
1.变量命名规则
变量的名字必须以字母开头;
名字中不能含有任何的标点符号;
名字最大长度不能超过 255个字符;
名字不能和 VBScript中的关键字同名;
变量都有作用域,它由变量的声明位置决定
,ASP程序设计,15
3.2.3 变量
2.声明变量
( 1) 隐式 声明方式:在使用变量前并不需要声明,而可直接使用。
( 2) 显式 声明方式:使用 变量声明语句 来声明变量的方式。变量声明语句有 Dim,Public
和 Private。
Dim strStudentName
Dim strTeacherName,strWorkerName
,ASP程序设计,16
3.2.3 变量
3.变量的作用域变量的作用域指变量的有效 作用范围 。
使用 Dim声明的变量,其作用域分为 过程内有效和整个程序中都有效 。
在变量过程内部声明的变量称为 过程级变量或局部变量,只能在声明它们的过程中使用。
过程外部声明的变量称为 脚本级变量或全局变量,
在同一个 asp文件中的任何脚本命令均可访问和修改该变量的值。
,ASP程序设计,17
3.2.3 变量
<%
Option Explicit
Dim intX '声明脚本级变量
intX=1 '给脚本级变量赋值
SetLocalVariab1e '调用过程修改过程级变量的值
Response.Write intX '将脚本级变量的值发送到浏览器,
值仍为 1
Sub SetLocalVariab1e
Dim intX '声明过程级变量
intX=2 '给过程级变量赋值
End Sub %>
,ASP程序设计,18
3.2.4 常量通过关键字 Const定义符号常量。
例如,Const PI=3.1415926
定义 日期和时间 型常量时需要使用 #字符将它们的值包围起来。
例如,Const taday=#05-09-2005#
Const work_time=#08:30:00#
,ASP程序设计,19
3.2.5 数组数组有以下几个 特点,
使用数组之前要先进行定义,然后才能使用 。 通常用 Dim语句来定义数组 。
数组下标的下界一律从 0开始 。
一个数组中可包含各种子类型的数据元素 。
数组分两种类型,即 静态数组 和 动态数组 。
,ASP程序设计,20
3.2.5 数组
1,静态数组分为 一维,二维 或 多维 数组 。 维数 由数组名之后紧跟的括号中数字的个数决定,数组的大小由 括号中的数值 决定 。 静态数组在 编译 时开辟内存区,它的 大小 在运行时是 不可以改变 。
定义一个一维数组 arrVar(3):
Dim arrVar (3)
定义一个二维数组 arrTwoDim(2,3):
Dim arrTwoDim(2,3)
,ASP程序设计,21
3.2.5 数组
2,动态数组运行时 大小可变 的数组 。 程序没运行,不占内存,
运行 时才为其开辟内存区 。
ReDim [Preserve] 变量 (下标 )
ReDim arrVar(10)
Dim arrVar()
ReDim arrVar(4)
ReDim arrVar(6)
ReDim Preserve arrVar(Ubound(arrStudent)+1)
,ASP程序设计,22
3.2.6 基本输入输出提供两种非常方便的输入输出方法,即用来 输出消息 的 消息对话框 ( Message Box) 和用来 要求用户输入数据 的 数据输入对话框
( Input Box)。
,ASP程序设计,23
3.2.6 基本输入输出
1.消息对话框
MsgBox(prompt[,buttons][,title]
[,helpfile,context])
Prompt,字符串显示在对话框中的消息,必需。
Buttons,数值显示按钮的数目及形式,可选。
Title,字符串显示在标题栏中的提示信息,可选。
Helpfile,字符串识别向对话框提供上下文相关帮助的帮助文件,可选。
Context,数值指定帮助主题内容的编号,可选。
,ASP程序设计,24
3.2.6 基本输入输出
2.输入对话框
InputBox(prompt[,title] [,default]
[,xpos][,ypos][,helpfile,context])
prompt,要显示的消息。
title,显示在标题栏的字符串。
default,在没有其它输入时作为缺省值。
xpos和 ypos,指定对话框在屏幕中出现的位置。
,ASP程序设计,25
3.3 表达式和运算符
3.3.1 表达式和运算符概述
3.3.2 数学表达式及算术运算符
3.3.3 条件表达式及其运算符
3.3.4 字符串表达式及其运算符
3.3.5 运算符的优先级
,ASP程序设计,26
3.3.1 表达式和运算符概述数学表达式,用于常规的数值运算,运算结果仍然为数值;
条件表达式,常用于根据一系列条件做出判断,并采取相应的动作,运算结果为布尔值 True或者 False;
字符串表达式,用来将多个字符串连接成一个较长的字符串,运算结果仍为字符串。
,ASP程序设计,27
3.3.1 表达式和运算符概述运算符一般分为 两种,单目运算符 和 双目运算符 。
单目运算符,只有一个前置的运算符对操作数进行操作 。 一般格式如下:
Operator Operand
双目运算符,在运算符的两端各有一个操作数 。 一般形式如下:
Operand1 Operator Operand2
,ASP程序设计,28
3.3.2 数学表达式及算术运算符
1.数学表达式
varA=varB+varC
intResult=A-B*C+D/E
2.算术运算符常用的加、减、乘、除等数学算术运算。
,ASP程序设计,29
3.3.3 条件表达式及其运算符
1.条件表达式条件表达式可以通过两种布尔运算符来进行运算:关系运算符和逻辑运算符。
If a<10 Then
b=b+1
End If
,ASP程序设计,30
3.3.3 条件表达式及其运算符
2.关系运算符运算符 功能 表达式实例恒等于 ( =) 比较两个表达式是否相等 。 23= 23,x+1=y-5,
str=””
不等于 ( <>或
><)
比较两个表达式是否不相等 。 X*4+1<>y,a-1<>6
大于 ( >) 一个表达式是否大于另一个表达式 。 5>3,var*2>6
小于 ( <) 一个表达式是否小于另一个表达式 。 Var<x-6,5<4
大 于 或 等 于
( >=)
一个表达式是否大于或等于另一个表达式 。
,lang”>=”name”
小 于 或 等 于
( <=)
比较一个表达式是否小于或等于另一个表达式 。
X<y+4
对象相等 ( is) 判断两个对象是否相等 。 Student1 is Student2
,ASP程序设计,31
3.3.3 条件表达式及其运算符
3.逻辑运算符运算符 功能 表达式实例取反 ( Not) 对逻辑真取反结果为逻辑假,反之为逻辑真 。 Not True
逻辑与
( And)
如果两个表达式的值都为真,结果才为真,
否则结果为假 。
(5<3) And (6>4)
逻辑或 ( Or) 两个表达式中只要有一个为真,结果就为真,
只有两个都为假,结果才为假 。
(a<4) Or (3>1)
异或 ( Xor) 如果两个表达式同时为真或同时为假,则结果为假,否则结果为真 。
True Xor (a>x)
等价 ( Eqv) 是异或运算取反的结果 。 如果两个表达式同时为真或同时为假,则结果为真,否则为假 。
( a<b) Eqv
False
蕴含 ( Imp) 当第一个表达式为真,第二个表达式为假时,
结果为假,否则结果为真 。
True Imp (2>3)
,ASP程序设计,32
3.3.4 字符串表达式及其运算符
1.字符串表达式把两个或者更多个字符串进行连接,形成一句完整的语句。
2.连接运算符连接运算符有两个:,+” 和,&,。
,ASP程序设计,33
3.3.5 运算符的优先级通常的 运算顺序 是:
先进行 函数 运算,
接着进行 算术 运算,
然后进行 关系 运算,
最后进行 逻辑 运算。
如果表达式中含有 括号,则它的优先级是最高 的。
,ASP程序设计,34
3.4 VBScript的控制结构
3.4.1 控制结构概述
3.4.2 选择结构
3.4.3 循环结构
,ASP程序设计,35
3.4.1 控制结构概述两种 类型的控制语句:
条件控制语句包括选择语句
( If…Then…Else ) 和多分支选择语句
( Select…Case )。
循环控制语句包括 For循环控制语句
( For…Next ),Do循环控制语句
( Do…Loop ) 和 While循环( While…Wend )
语句。
,ASP程序设计,36
3.4.2 选择结构
1.简单条件控制语句
If 条件表达式 Then 语句或
If 条件表达式 Then
语句体
End If
,ASP程序设计,37
3.4.2 选择结构
2,If…Then…Else 语句
If 条件表达式 Then
语句体 1
Else
语句体 2
End If
,ASP程序设计,38
3.4.2 选择结构
3.嵌套条件控制语句
If 条件表达式 1 Then
[语句体 1]
[Else If条件表达式 2 Then
[语句体 2]] …
[Else
[语句体 n]] …
End If
,ASP程序设计,39
3.4.2 选择结构
4.多分支条件控制语句
Select Case 测试表达式
[Case 表达式 1
[语句体 1]]
[Case 表达式 2
[语句体 2]] …
[Case Else
[语句体 n]]
End Select
,ASP程序设计,40
3.4.3 循环结构
1,For循环
( 1) For… Next语句
For 循环变量 =初值 To 终值 [Step 步长 ]
循环体
[Exit For]
Next [循环变量 ]
,ASP程序设计,41
3.4.3 循环结构
1,For循环
( 2) For Each… Next语句
For Each 元素 In 集合语句体
Next [元素 ]
,ASP程序设计,42
3.4.3 循环结构
2,Do循环第一种,Do [While|Until循环条件 ]
循环体
[Exit Do]
Loop
第二种,Do
循环体
[Exit Do]
Loop [While|Until循环条件 ]
,ASP程序设计,43
3.4.3 循环结构
3,While循环
While 循环条件循环体
Wend
,ASP程序设计,44
3.5 VBScript的函数和子过程
3.5.1 过程概述
3.5.2 VBScript的函数
3.5.3 VBScript的子过程
,ASP程序设计,45
3.5.1 过程概述
过程只有单一入口,但可有多个出口。
在 Web页面任何位置都可以定义过程,客户端过程通常定义在 <HEAD>和 </HEAD>中。
可以用浏览器所特有的事件来调用客户端脚本。
可以向过程中传递任何有效的参数。
过程 分为无返回值的 Sub( 子)过程 和有返回值的 Function函数 。
,ASP程序设计,46
3.5.2 VBScript的函数
[Private][Public] Function 过程名 [(参数列表 )]
[语句块 ]
函数名 =表达式
[Exit Function]
[语句块 ]
End Function
Private表示函数为私有函数
Public表示公有函数 ( 默认 )
“函数名 =表达式,用于为函数设置返回值
Exit Function退出函数体
,ASP程序设计,47
3.5.3 VBScript的子过程
[Private][Public]Sub 过程名 [(参数列表 )]
[语句块 ]
[Exit Sub]
[语句块 ]
End Sub
,ASP程序设计,48
3.6 VBScript的内部库函数
3.6.1 数学函数
3.6.2 字符串函数
3.6.3 日期和时间函数
3.6.4 数据类型转换函数
3.6.5 数据类型判别函数
,ASP程序设计,49
3.6.1 数学函数名称 语法 实例求平方根函数 Sqr Sqr(2)=1.4142135623731
求绝对值函数 Abs Abs(-2)=2
指数函数 Exp Exp(2)=7.38905609893065
对数函数 Log Log(2)=0.693147180559945
符号函数 Sgn Sgn(-5)=-1
三角函数
Sin Sin(x)
Cos Cos(x)
Tan Tan(x)
Atn Atn(x)
,ASP程序设计,50
3.6.2 字符串函数名称 语法 实例空格 Space(n)
删除空白字符 Trim(s) Trim(" 欢迎您 ! ")="欢迎您 ! "
长度测试 Len(s) Len("欢迎您 ! ")=4
字符串截取 Left(s,n) Left("北华航天工业学院 ",4)= "北华航天 "Mid(s,p,n) Mid("北华航天工业学院 ",5,2)= "工业
"Right(s,n) Right("北华航天工业学院 ",2)= "学院 "
大小写转换 Ucase(s) Ucase("Chinese")="CHINESE"
Lcase(s) Lcase("CITY")="city"
字符串匹配 InStr(s1,s2) InStr("北华航天工业学院 ","航天 ")=3
,ASP程序设计,51
3.6.3 日期和时间函数日期函数语法格式 功能
Year(Now) 返回当前系统的年份 。
Month(Now) 返回当前系统的月份 。
Day(Now) 返回当前系统的日期 。
WeekDay(Now[,n]) 返回当前系统的星期 。
,ASP程序设计,52
3.6.3 日期和时间函数时间函数语法格式 功能
Hour(Now) 返回当前系统的小时 ( 0~
23) 。
Minute(Now) 返回当前系统的分钟 ( 0~
59) 。
Second(Now) 返回当前系统的秒 ( 0~ 59) 。
,ASP程序设计,53
3.6.4 数据类型转换函数名称 功能
CStr函数 将数据转换成一个字符串 。
CInt函数 将数据转换成一个整数 。 如果有小数部分则先进行四舍五入 。
CDate函数 将数据转换成一个日期 。
CBool函数 将数据转换成一个布尔值 。
CLng函数 将数据转换成一个长整型数 。 如果有小数部分,则先进行四舍五入 。
CSng函数 将数据转换成一个单精度数 。
CDbl函数 将数据转换成一个双精度数 。
,ASP程序设计,54
3.6.5 数据类型判别函数名称 功能
IsNull函数 测试自变量是否是 Null,如果是,则返回真,否则返回假 。
IsEmpty函数 测试自变量是否是 Empty,如果是,
则返回真,否则返回假 。
IsNumeric函数 测试自变量是否是一个数值,如果是,
则返回真,否则返回假 。
IsArray函数 测试自变量是否是一个数组,如果是,
则返回真,否则返回假 。
IsDate函数 测试自变量是否是一个日期型数据,
如果是,则返回真,否则返回假 。
IsObject函数 测试自变量是否是一个对象,如果是,
则返回真,否则返回假 。
,ASP程序设计,55
3.7 VBScript的对象和事件
3.7.1 对象和事件的概念
3.7.2 网页及浏览器对象
3.7.3 浏览器内嵌 HTML控件
3.7.4 对象和事件实例
,ASP程序设计,56
3.7.1 对象和事件的概念
对象 是在浏览器中或者脚本编写中用于综合地描述一组功能和事件的组合体。
事件 是对网页中各种控件状态改变的一种描述。
使用对象和属性名称时是 区分大小写 的 。
,ASP程序设计,57
3.7.2 网页及浏览器对象
1,Windows窗口对象
( 1)属性属性名称 功能
DefaultStatus 用来设置状态栏中的缺省文字 。
Document 返回当前窗口的文档对象的引用 。
Frames 返回当前窗口中的框架 。
History 返回当前窗口的历史对象 。
Location 返回位置类型对象 。
Name 返回当前窗口的名字 。
Parent 返回当前窗口的父窗口的名字 。
Self 对当前窗口对象的另一个引用 。
Status 返回或设置显示在状态栏中的文字 。
Top 返回代表最高级窗口的一个对象 。
,ASP程序设计,58
3.7.2 网页及浏览器对象
( 2) Windows对象的方法方法名称 功能
Alert 显示一个带,OK”按钮的警告消息框,没有返回值 。
ClearTimeout 删除一个指定的计数器,无返回值 。
Close 关闭窗口,无返回值 。
Conform 显示一个带有 OK/Cancel的消息框,返回布尔类型值 。
Open 打开一个新窗口或创建一个新窗口并在其中显示一个文档,返回一个 Windows对象 。
Prompt 显示一个带有 OK/Cancel类型的输入型对话框,
返回字符串类型值 。
SetTimeout 经过指定时间后执行特定的代码,返回长整数值 。
,ASP程序设计,59
3.7.2 网页及浏览器对象
( 3) Windows窗口对象的事件。
OnLoad,加载页面调用相应事件。
OnUnload,卸载页面调用相应事件。
,ASP程序设计,60
3.7.2 网页及浏览器对象
2,Document对象 ( 1) Document对象的属性属性名称 功能
LinkColor 返回或设置文档中链接的颜色 。
AlinkColor 返回或设置文档中的活动链接的颜色 。
VlinkColor 返回或设置被访问过的链接的颜色 。
BGColor 返回或设置文档的背景色 。
FGColor 返回或设置文档的前景色 。
Forms 表示在一个 HTML文档中的一个窗体,
LastModified 返回当前文档最近一次被修改的时间 。
Title 返回当前文档的标题,只读 。
Cookie 返回或设置曾经访问过网页的客户方的 Cookie。
Referrer 返回所指向的文档的 URL字符串 。
Links 返回一个链接数组 。
,ASP程序设计,61
3.7.2 网页及浏览器对象
( 2) Document文档对象的方法方法名称 功能
Write 将字符串变量写入当前文档中 。
WriteLn 写入到当前文档时,将字符串变量作为一个新行附加到结尾 。
Open 为输出数据打开一个新的文档 。
Close 关闭文档流 。
Clear 关闭已经开启的文档输出流,并且清除屏幕上所有的内容 。
,ASP程序设计,62
3.7.2 网页及浏览器对象
3,Location对象属性名称 功能
Href 返回或设置装载入浏览器窗口的完整的 URL。
Protocol 返回或设置 URL使用的协议,例如 HTTP协议,FTP协议等 。
Host 返回或设置 URL的宿主和端口,宿主和端口之间用冒号隔开 。
HostName 读取或设置 URL的宿主,可以是一个 IP地址或是一个名字 。
Port 返回或设置 URL的端口 。
PathName 返回或设置 URL的路径名 。
Search 返回或设置 URL的搜索部分
Hash 返回或设置 URL的无用部分 。
,ASP程序设计,63
3.7.2 网页及浏览器对象
4,History历史对象
History.back(n)
History.forward(n)
History.go(n)
,ASP程序设计,64
3.7.2 网页及浏览器对象
5,Form对象可以作为文档对象的一个属性被访问。
Action,返回或设置表单的动作属性。
Elements,返回或设置表单的元素属性。
Method,返回或设置表单的方法属性。
Target,返回或设置表单的目标属性。
Encoding,返回或设置表单的代码属性。
,ASP程序设计,65
3.7.3 浏览器内嵌 HTML控件控件 事件 方法
Button OnClick
OnFocus
Click
Focus
CheckBo
x
OnClick
OnFocus
Click
Focus
PassWor
d
OnFocus Focus
Radio OnClick
OnFocus
Click
Focus
Reset OnClick
OnFocus
Click
Focus
Select OnFocus
OnBlur
OnChange
Focus
Blur
Submit OnClick
OnFocus
Click
Focus
Text OnFocus
OnBlur
OnChange
OnSelect
Focus
Blur
Select
TextArea OnChang
OnSelect
Select
,ASP程序设计,66
3.8 VBScript纠错处理
3.8.1 VBScript中的编码约定
3.8.2 交互的调错环境
3.8.3 常见错误及调试
,ASP程序设计,67
3.8.1 VBScript中的编码约定
1,HTML编写格式约定脚本代码可以放在 网页的 任何位置,但最好放在 <HEAD>和 </HEAD>中间,这样浏览器可以首先解释和运行脚本代码,而且醒目和易于调试和维护。脚本中应该 包含注释 标记,可在浏览器不支持脚本时将其 隐藏 。
在编写程序时要有一定的 层次结构,尽量注意缩进。
,ASP程序设计,68
3.8.1 VBScript中的编码约定
2.命名约定定义 变量 时,在变量前加上其对应的 数据类型 ;定义 函数和过程 应该以 要完成的功能的动词 开始。
InitArray或者 CloseFrame等。
,ASP程序设计,69
3.8.1 VBScript中的编码约定
3.注释语句约定
当传递给过程的参数用途不明显,或者过程对参数的取值范围要求严格时,
应加以说明。
每个重要变量的声明部分要添加注释来描述它的用途。
应在 <SCRIPT>的开始部分包含该段代码的功能描述注释。
,ASP程序设计,70
3.8.2 交互的调错环境常用的调错环境有,
Microsoft Visual C++ Developer Studio
开发平台的源代码编辑器
Microsoft Internet Exploer浏览器
,ASP程序设计,71
3.8.3 常见错误及调试
1.文档加载时错误在 HTML文档加载时就出现错误而不能运行的现象,有时也称符号错误。
2.网页运行时错误网页加载后,在运行网页对象的事件过程中出现的错误。