文档库 最新最全的文档下载
当前位置:文档库 › ASP 第三章 VBScript语法免费下载

ASP 第三章 VBScript语法免费下载

本文由junne_chen贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
第三章 VBScript语法 VBScript语法
3.1什么是脚本语言 3.1什么是脚本语言
所谓脚本语言,就是介于HTML和Java、 C++和Visual Basic之类的编程语言之间的语言。 HTML通常用于格式化文本和链接网页。编程 语言通常用于向计算机发送一系列复杂指令。 脚本语言也可用来向计算机发送指令,但它们 的语法和规则没有可编译的编程语言那样严格 和复杂。脚本语言更接近高级语言,但却比高 级语言简单易学,当然也没有高级语言功能那 么强大。脚本语言主要用于格式化文本和使用 以编程语言编写的已编译好的组件。
在ASP中可以直接使用VBScript和 JavaScript两种脚本语言。对于有Visual Basic 编程经验的读者来说,VBScript是很 好的选择;而对于熟悉C、C++或者Java 语言的人来说,使用JavaScript则更容易。 但无论如何,掌握其中一门Script语言对于 进一步学习ASP编程是非常关键的。
3.1.1VBScript
VBScript与Basic语言有密切关系。如果你熟悉 BASIC,你将会发现VBScript很容易学习和使 用。VBScript是Microsoft Visual Basic的简化版 本。 VBScript是一种脚本语言。这意味着这种语言 比BASIC语言的成熟版本容易使用又难于使用。 编制简单的程序时,脚本语言是容易使用的。 脚本语言的句法比较简单。但是,简单的句法 也使开发大的应用程序变得很困难。
你可以在HTML文件中直接嵌入VBScript脚本。这 使你能够扩展HTML,使它不仅仅是一种页面格 式语言。带有VBScript脚本的网页在每次下载到 浏览器时都可以是不同的,而且可以对用户的操 作做出反应。 VBScript是Active Sever Pages的缺省语言。你也可 以在ASP网页中使用其它脚本语言,如Jscript, Perl,或者REXX(由IBM UK实验室的Michael Cowlishaw所创的一种语言)。但是,本书中所有 的ASP例子程序都使用VBScript。
3.1.2 JavaScript
JavaScript是一种基于对象(Object)和事件 驱动(Event Driven)并且具有安全性的脚 本语言。使用它的目的是与HTML超文 本标记语言、Java脚本语言(Java小程序) 一起实现在一个Web页面中链接多个对 象,与客户交互作用。从而可以开发客 户端的应用程序等。它是通过嵌入在标 准的语言中实现的。
JavaScript是一种脚本语言,它采用小程序段的方 式实现编程。 像其它脚本语言一样,JavaScript同样也是一种解 释性语言,它提供了一个容易的开发过程。 JavaScript是一种基于对象的语言,同时可以看作 一种面向对象的。这意味着它能运用自己已经创 建的对象。因此,许多功能可以来自于脚本环境 中对象的方法

与脚本的相互作用。 JavaScript的简单主要体现在:首先它是一种基于 Java基本语句和控制之上的简单而紧凑的设计, 从而对于学习Java是一种非常好的过渡。其次它 的变量类型是采用弱类型,并未使用严格的数据 类型。
JavaScript是一种安全性语言,它不允许访问本地 的硬盘,并不能将数据存入到服务器上,不允许 访问本地的硬盘,并不能将数据存入到服务器上, 不允许对网络文档进行修改和删除,只能通过浏 览器实现信息浏览或动态交互。从而有效地防止 数据的丢失。 JavaScript是动态的,它可以直接对用户或客户输 入做出响应,无须经过Web服务程序。它对用户 的反映响应,是采用以事件驱动的方式进行的。 JavaScript是依赖于浏览器本身,与操作环境无关, 只要能运行浏览器的计算机,并支持JavaScript的 浏览器就可以正确执行。从而实现了“编写以次, 走遍天下”的梦想。
综上所述,JavaScript是一种新的描述语言, 它可以被嵌入到HTML文件之中。 JavaScript语言可以做到回应使用者的需求 事件(如:from的输入),而不用任何的网 路来回传输资料,所以当一位使用者输入 一项资料时,它不用经过传给伺服端(server) 处理,再传回来的过程,而直接可以被客 户端(client)的应用程式所处理。
3.1.3脚本语言在客户端和服务器端的运行 3.1.3脚本语言在客户端和服务器端的运行
VBScript既可以作为客户端编程语言,也可以作为服务器 端编程语言。客户端编程语言是可以由浏览器解释执行的 语言。当一个以这些语言中的任意一种编制的程序被下载 到一个兼容的浏览器中时,浏览器将自动执行该程序。客 户端编程语言的优点是浏览器完成了所有的工作,这可以 减轻服务器的负担。而且客户端程序运行起来比服务器端 程序快得多。当一个浏览器的用户执行了一个操作时,不 必通过网络对其做出响应,客户端程序就可以做出响应。 但是,一般来说,可以解释VBScript脚本的浏览器只有 Microsoft Internet Explorer。例如Netscape Navigater将忽略 VBScript脚本。这意味着目前没有充分的理由把VBScript 作为客户端编程语言。你不应该花费时间来编写只有少数 浏览器可以解释的程序。
JavaScript 可用作客户端或服务器端的编程语言。客 户端编程语言可以在诸如Netscape Navigator 或 Microsoft Internet Explorer 的浏览器上得到解释和执行。 另一个客户端编程语言的例子是Java,当用这些语言 写的程序被兼容的浏览器读入时,浏览器自动执行这 个程序。客户端编程语言的有利之处在于浏览器处理 了全部工作,这就减轻了服务器的负担。客户端程序 运行起来也比服务器

端程序快得多。当浏览器的用户 做出某种行为时,对此的反应不需通过网络进行传输, 客户端程序可对它作出反应。JavaScript用作客户端编 程语言是非常好的,与VBScript不同,JavaScript创建 的客户端脚本能被现有的大部分浏览器识别。Netscape Navigator 和 Internet Explorer都可以解释和执行包括 JavaScript 的HTML文件。
然而,与VBScript相同,JavaScript 也是服务器端编程语言。服务器端编程 语言在提供网点服务的服务器上执行, 而不是在接收网页的浏览器上执行。服 务器端编程语言在你的网点计算机上完 成所有这些工作,承受所有的负担。使 用JavaScript 作为服务器端语言的好处是 脚本与使用的浏览器无关。你的网页甚 至能与不把JavaScript 作为各户端语言的 旧版的网络浏览器兼容,这是因为在网 页通过Internet传送到浏览器之前脚本就 已经被处理了,网络浏览器接收到的只 是普通的HTML文件。
3.1.4脚本语言的注释标记 3.1.4脚本语言的注释标记
VBScript支持撇号型注释。与HTML注释不同, 当处理脚本时,它们将被删除,而不是被送到 浏览器。 <% 'This line and the following two are remarks. 'This function prints all 'the elements in an array. Call PrintAll(Barray()) %>
输出表达式不能包括注释。例如,下面的 第一行将正常运行,而第二行则不能,因 为它是以 <%= 开头的。 <% i = i +1 'this increments variable i. This script will work. %> <%= name 'this prints the variable name. This script will fail. %>
3.2VBScript的数据类型、变量和常量 3.2VBScript的数据类型、变量和常量 3.2.1VBScript的数据类型 3.2.1VBScript的数据类型
在VB、C++等高级语言中,有整数、字 符、浮点数等不同的数据类型,但在 VBScript中只有一种数据类型,称为 Variant,也叫做变体类型。Variant是一 种特殊的数据类型,根据不同的使用方 式,它可以包含不同的数据类别信息, 如字符串、整数、日期等。这些不同的 数据类别称为数据子类型,如表3.1所示。
表3.1 Variant 的数据子类型
3.2.2VBScript的变量和常量 3.2.2VBScript的变量和常量 1.VBScript常量 1.VBScript常量
常量就是拥有固定的数值,它可以代表字符串、数字和日 期等常数,常量一经声明其值将不能再更改。声明常量的 意义在于可以在程序的任何部分使用该常量来代表特定的 数值,从而方便了编程。 这里有一个例子: <% CONST =10.00 %> 在这个例子中,常量COST1被分配了值10.00。因为 COST1是一个常量,在脚本中将不能给COST1分配新值。 如果你试图改变一个常量的值,你将收到错误信息: Illegal Assignment error.。
2.VBScript变量 2.VBScript变量
所谓变量,从专业的角度说,就是存储在

内存中的用 来包含数据的地址的名字。它与常量的最大区别就是, 常量一经声明(定义)其值就不能改变了,而变量在 声明后仍可随时对其值进行修改。 声明变量可以使用Dim语句,例如: <% Dim a '声明一个变量 Dim b,c,d '用同一个Dim语句可以声明多个变量,用逗号隔开即可。 %>
变量的赋值也与许多高级语言相同,变量 放在等号的左边,赋值语句放在等号的右 边,并且赋值语句也可以是表达式形式。 例如: <% a=10+20*3 b=”中国” %>
变量的引用和常量类似,可以将变量直接赋值给 另外一个变量,也可以将变量引用到表达式中。 例如: <% Dim a,b,c '声明3个变量 a=5 ' '给变量a赋值 a b=5 '给变量b赋值 c=a+b '引用变量a和b,将两者之和赋给变量c %>
如果希望强行要求所有的变量都预先声明,则可 以在ASP文件中所有的ASP语句之前添加Option Explicit语句,这条语句的意思就是要求所有的变 量必须先声明才能使用。 例如: <% Option Explicit Dim a,b,c '声明3个变量 a=2 %>
3.3VBScrip的运算符 3.3VBScrip的运算符
VBscript包括你期望一种编程语言应该有的所有数学运算符。你 可以进行加,减,乘和除的运算。VBScript 包括的算术运算符, 如表3.2所示。
表3.2 算术运算符
3.3.1算术运算符 3.3.1算术运算符
3.3.2关系运算符 3.3.2关系运算符
VBScript 包括的关系运算符,如表3.2所示。 包括的关系运算符,如表3.2所示。
表3.2 关系运算符
3.3.3逻辑运算符 3.3.3逻辑运算符
VBScript 包括的逻辑运算符,如表3.3所示。 包括的逻辑运算符,如表3.3所示。
表3.3 逻辑运算符
3.3.4字符串连接运算符 3.3.4字符串连接运算符
1.&运算符
&运算符用来把两个字符串连接起来。 现举例说明: <% welword=”你好,” Response.Write welword&”欢迎光临!” %> 程序的结果为:
你好,欢迎光临!
2.+运算符
“+”的使用和“&”一样。 现举例说明 <% name=”李平” Response.Write “名字”+“是”+name %> 程序运行结果为:
名字是李平
3.4 VBScript程序流程控制 VBScript程序流程控制
VBScript 的流程控制通过条件语句和循环语句 来完成。按照一般程序的流程结构类型,即顺 序结构、分支结构和循环结构三种类型,可以 将VBScript中的流程控制语句分为两类。第一 类为分支结构的流程控制语言,第二类为循环 结构的流程控制语言。至于顺序结构,它是系 统默认的程序结构,不需要专门的流程语句来 控制,这里就不特别介绍了。
3.4.1分支结构 3.4.1分支结构
1.IF….ELSE… 1.IF….ELSE…EDNIF VBscript最有用的语句之一是IF……THEN语句。下面的 例子显示了如何使用

这种语句: <% if time > #6:00:00pm# then Welc=”Good Evening!” end if %> 这个语句在时间是下午六点之后的情况下,把值 “Good Evening”分配给变量Greeting。(字符#用来界 定日期或时间常量)。注意表达式END IF。表达式 END IF指定了分支代码块的结束。
你可以在END IF表达式之前放置多条语句,象这 样: <% if time >#6:00:00pm# then Welc=”Good Evening!” EveVisitor=EveVisitor+1 end if %> 这个例子中的两个语句都只有在时间是下午六点 以后的情况下才执行。
你也可以对一个分支使用ELSE表达式。跟在 ELSE表达式后的语句只有条件的真值为false时才 被执行。请看这个例子: <% if time > #6:00:00pm# then Welc=”Good Evening!” else Welc=”Good some other time!” end if %>
你可以进行分支嵌套,这通常是非常有用的。这里有一个例子: <% if time > #6:00:00pm# then if time < 10:00:00pm# then Welc=”Good Evening!” else Welc =”Good Late Evening!” end if else Welc =”Good some other time!” end if %> 在这个例子中,如果是在晚上十点之前,则问候语是“Good Evening!”,如果时间晚于十点,则问候语是”Good Late Evening!”。 如果不是在六点之后,则使用问候语“Good some other time!”。
如果在一个分支中,你只想执行一个语句,那么 你不需要使用END IF 表达式。这里有两个例子: <% if time < #6:00:00pm# then Welc =”Good Bye!” %> <% if time < #6:00:00pm# then Welc =”Good Day!” else Welc =”Good Evening!” %>
2. SELECT CASE
SELECT CASE语句与IF……THEN语句关系密切。IF……THEN 语句只能允许你测试一个条件;SELECT CASE语句允许 你一次测试多个条件,如下例所示: <% SELECT CASE Name CASE “Amanda” Welc =”Welcome Amanda!” CASE “Lisa” Welc =”Welcome Lisa!” CASE ELSE Welc =”Welcome Someone!” END SELECT %>
在这个例子中, 变量Name代表你站点访问 者的名字。如果该名字匹配某个条件,则 相应的问候语被分配给变量Welc。否则执 行CASE ELSE表达式后面的语句。 CASE ELSE语句是可选的。如果你省去这 个表达式,并且所有的CASE条件都没有匹 配,则不执行任何语句。
3.4.2循环控制 3.4.2循环控制
1. FOR…NEXT FOR…
当你需要重复执行一组语句一定次数时,你可以使用一个 FOR……NEXT循环,如下例所示: <% for i=1 to 300 %> Hello Everyone! <% next %> 在这个例子中,句子“Hello Everyone!”被在浏览器中打印300次。 FOR语句和NEXT语句之间的任何语句都将被重复执行。甚至, 象这个例子一样,当循环体内是HTML代码时,它也将被重复执 行。
通过使用关键字STEP,你可以构造反向的循环。 考虑下面的例子: <% For i=300 to 1 step –1 %> Hello Everyone! <% NEXT %> 这个例子输出与上一个例子完全相同

的结果。但 是,在这个例子中,FOR..NEXT循环从数字300开 始,反向循环到1。
你可以在循环中使用不同的步长。在下面的例子 中,变量i每次被增加10: <% For i=1 to 300 Step 10 %> <%=i%>
<% Next %>
你可以用EXIT FOR语句从一个FOR……NEXT循环退出。假 定你在遍历一个数组以找到某个字符串表达式的匹配值。 当你已经找到了一个匹配时,你不需要继续执行循环: <% Dim Myarray(10) Myarray(4)=”Rose” For i=0 to ubound(myarray) If myarray(i)=” Rose” then Exit For Next %> 在这个例子中,如果数组中某个元素的值与表达式“Rose” 相匹配,则立即退出FOR……NEXT循环。变量i的值等于被 匹配的元素的索引值
2. DO…LOOP DO…
当以指定的次数执行一组语句或显示HTML代码块时,FOR……NEXT循 环是有用的。但是,在许多情况下,当一个循环执行之前,你并不知道 它需要执行的次数。在这些情况下,你需要使用DO…LOOP循环。 用DO循环,你可以构造当某个条件保持为真时重复执行的循环,也可 以构造重复执行直到某个条件为真的循环。这里有一个例子: <% Do While Welc<>”Hello!” Welc=”Hello!” %> <%=Welc%> <% Loop %> 在这个例子中,当变量Welc的值不等于字符串”Hello!”时,处在DO语 句和LOOP语句之间的语句被重复执行。因为在循环体你变量Welc被赋 了值”Hello!”,WHILE条件只在第一次迭代时为TRUE。换句话说,这 个DO循环体内的语句只执行一次,字符串”Hello!”只被在屏幕上打印 一次 。
你也可以构造一个一直执行直到某个条件为真的循环,如 下例所示: <% Do Until Welc=”Hello!” Welc =”Hello!” %> <%= Welc %> <% Loop %> DO循环只执行一次。一旦变量Welc的值等于”Hello!”就 不再执行循环。这个循环只执行一次,字符串”Hello!”只 在屏幕上打印一次。
如果你愿意,你可以把表达式UNTIL转移 到循环的底部,象这样: <% Do Welc =”Hello!” %> <% Loop Until Welc =”Hello!” %>
使用DO循环时,你可以用EXIT DO语句退出循环。 考虑如下的循环: <% Do Until 1<>1 x=x&”!” If x=”!!!!!” Then Exit do Loop %> <%=x%> 在这个例子中,DO循环一直执行到1等于1,换句 话说,它永远循环下去。然而,在每一次循环中, 变量x被追加一个感叹号。当变量x等于字符 串”!!!!!”时,exit do语句强制退出循环。
3.5VBScript 的子过程和函数
3.5.1Sub子过程 3.5.1Sub子过程
Sub过程是包含在Sub和 End Sub语句之间的一组VBScript 语句,执行操作但不返回值。Sub过程可以使用参数(由 调用过程传递的常数、变量或表达式)。如果Sub过程无 任何参数,则Sub语句必须包含空括号“( )” 下面的Sub过程使用两个VBScript函数,即MsgBox和 InputBox,提示

用户输入信息,然后显示根据这些信息计 算的结果。计算由使用VBScript创建的Function 函数 Convertyuan完成,函数Convertyuan在后面介绍。 Sub ConvertSum() temp=InputBox(“请输入数目:”,1) MsgBox”数目为”&Convertyuan(temp)&”元。” End Sub
3.5.2Function函数 3.5.2Function函数
Function函数是包含在Function 和End Function 之间的一组VBScript语句。Function过程于Sub 过程类似,但是Function可以返回值。Function 可以使用参数(由调用过程传递的常数、变量 或表达式)。如果Function过程无任何参数, 则Function语句必须包含空括号“()”。Function 过程通过函数名返回一个值,这个值是在过程 的语句中赋给函数名的,Function返回值的数 据类型总是Variant。
在下面的示例中,Convertyuan函数将人民币分换 算为元。Sub过程ConvertTemp 调用此函数时,包 含参数的变量被传递给函数,换算结果返回到调 用过程并显示在消息框中。
Sub ConvertTemp() temp=InputBox(“请输入人民币数目(单位:分):”,1) MsgBox”数目为”& Convertyuan (temp)&”元。” End Sub Function Convertyuan () Convertyuan = RMBfen/100 End Function
习题
1.VBScript是什么? 2.请写出下面几个表达式的运算结果: 19 Mod 5 * 3 -3^2 "3.1415" & 926 234 & 0.12345 "50" + "50" "x" > "y" (9>3) Xor ("x">"y") 3.VBScript变量的数据类型是什么?有什么特点? 4.VBScript中的变量和数组在功能上有何异同? 5.请编写程序段,将字符串“美丽”和“中华”两边的空 格去掉,并连成一个字符串“美丽中华”。 6.请编写函数计算x和y的平方和,并举例调用,调用时x、 y分别为2和6。 7.请编写程序段,判断年龄,如果大于等于18岁,则显示 “已成年”。 8.S=1^2+3^2+5^2+…+199^2,请利用两种循环语句编写程 序,计算S的值(提示:注意步长)。

相关文档