3 vbscript
This presentation is the property of its rightful owner.
Sponsored Links
1 / 97

第 3 章 脚本语言 VBScript PowerPoint PPT Presentation


  • 133 Views
  • Uploaded on
  • Presentation posted in: General

第 3 章 脚本语言 VBScript. 3.1 ASP 基本语法 3.2 VBScript 语法基础 3.3 VBScript 基本元素 3.4 VBScript 控制语句 3.5 过程与函数 3.6 基本输入输出函数 3.7 VBScript 常用函数. 1. 学习目标. 介绍了 VBScript 语言的基本知识,包括 VBScript 基本语法、 VBScript 基本元素、 VBScript 控制语句以及 VBScript 函数与过程等。通过本章学习,读者可以熟练利用 VBScript 脚本语言开发 ASP 程序。通过本章学习,读者可以达到以下目标:

Download Presentation

第 3 章 脚本语言 VBScript

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3 vbscript

第3章 脚本语言VBScript

3.1 ASP基本语法

3.2 VBScript语法基础

3.3 VBScript基本元素

3.4 VBScript控制语句

3.5 过程与函数

3.6 基本输入输出函数

3.7 VBScript常用函数

1


3 vbscript

学习目标

  • 介绍了VBScript语言的基本知识,包括VBScript基本语法、VBScript基本元素、VBScript控制语句以及VBScript函数与过程等。通过本章学习,读者可以熟练利用VBScript脚本语言开发ASP程序。通过本章学习,读者可以达到以下目标:

  • 掌握ASP程序的基本语法;

  • 掌握VBScript语法知识;

  • 了解常用的VBScript函数使用方法了解输入输出函数的使用。

2


3 1 asp

3.1 ASP基本语法

3.1.1ASP语法

  • 要区分HTML标记与普通文字,可以在HTML命令标记的两端加上"<"和">"分隔符。那么要区分服务器端的ASP脚本和其它字符,可以用"<%"和 "%>"包含ASP的命令加以区别,除此之外另有一个标准的HTML标记<script>,在编写服务器端的ASP脚本可以使用它来标识服务器端用户定义的函数、方法或模块,但须在<script>标记内指定属性runat="server",如果没指定runat="server"的将是会在客户端浏览器运行。这不是ASP了。

3


3 vbscript

1. ASP命令

  • ASP命令必须放在"<%"与"%>"之间,例如:<[email protected]="VBSCRIPT" CODEPAGE="936"%>

    2. ASP注释

  • 为了养成良好的编程风格外,适度的注释不可少,ASP提供了两中注释方式:

    • 单引号“‘”,在单引号之后的这行文字都视为注释。例如:<%'这是注释的方式一'%>。

    • rem 关键词,在REM后的文字,视为注释。例如<%rem 这是注释的方式二%>。

      3. 赋值语句

  • ASP中一般变量的赋值语句是 "="

  • 而对象是用 set 语句来赋值的

4


3 vbscript

4. 声明脚本语言

  • ASP默认的语言是VBScript,如果你想要其它语言来编写ASP就要声明所用的语言了,通常用有三种办法:

    • 在IIS中设置你要使用的默认脚本语言;

    • 在ASP文件里声明,示例:

      • <[email protected]="VBSCRIPT" CODEPAGE="936"%>

        • 上面的代码声明了当前文件使用VBSCRIPT语言,936中文编码,这个声明要写在第一行。

    • 第三种声明方法:

      <script language="JScript" runat="server">

      </script>

5


3 1 2 asp

3.1.2建立ASP程序

  • ASP程序就是扩展名为.asp的文本文件,是一个动态网页,其数据的获取是一个动态的,因此其创建过程和运行过程都与.html文档不一样。

    1.创建站点

    • 创建与管理站点的详细过程在第二章中已经介绍了,因为在动态网页中执行时需要用服务费,所示这里的重点是对测试服务器的设置。

      【例3-1】创建一个能够运行动态asp程序的网站“ASPWeb”。

6


3 vbscript

eg3-1.asp

<html>

<head>

<title>ASP日期时间显示</title>

</head>

<body>

欢迎大家访问我们的第一个ASP网站!<br>

今天是:<%=date()%>。<br>

时间是:<%=time()%>。<br>

(请按F5刷新页时间)

</body>

</html>

2.创建ASP程序

  • ASP的创建过程和HTML的创建过程基本类似,但是最后的文档扩展名和类型不一样。在上面站点的基础上创建ASP程序。

    • 【例3-2】在例3-1的网站中创建一个能够利用VBScript脚本编写代码的ASP程序“3-1.asp”。

      3. 配置服务器

  • 要执行asp文档,必须首先设置服务器,这里假设我们的web服务器是IIS,并且已经安装好,这里配置IIS,其执行步骤为。(注意不同的系统步骤和操作过程可能有点不一样)

    • 【例3-3】创建并设置虚拟目录,配置例3-2中所创建的站点的运行环境。

7


3 vbscript

eg3-2vb.html

<html>

<head>

<title>vbscript显示日期</title>

</head>

<body>

欢迎大家访问我们的第一个ASP网站!<br>

<script language="vbscript“ >

nowdate=date()

document.write "今天是:"& nowdate & "。<br>"

document.write "时间是:" & time() & "。<br>(请按F5刷新页时间)"

</script>

</body>

</html>

runat="server“

文件扩展名为.asp

8


3 vbscript

4. 运行ASP程序

  • IIS配置好后,ASP的运行过程就比较简单了,现在回到Dreamweaver开发环境,选择“文件”→ “在阅读器中预览” →“IExplore6.0”(不同机器的环境不一样),执行结果如图3.8所示,并且我们可以按照提示,按F5后可以刷新时间。

9


3 2 vbscript

3.2 VBScript语法基础

3.2.1 VBScript简介

  • VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语,有时也被缩写为VBS言,它是微软开发的一种脚本语言,VBScript是程序开发语言Visual Basic家族的最新成员,是VB的子集,语法也与VB相同。可以看作是VB语言的简化版,具有原语言容易学习的特性。

  • VBScript是一种基于对象的脚本语言,脚本:是指嵌入到Web页中的程序代码,利用这些特殊的代码,可以控制网页的控件和对象,增强网页的灵活性和多样性。

  • VBScript是目前最流行的脚本语言之一。既可在客户端进行编程,也可作为服务器端编程语言的脚本语言。

  • 目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接作为一个可执行程序,用于调试简单的VB语句非常方便,是asp动态网页默认的编程语言,配合asp内置对象和ADO对象,用户很快就能掌握访问数据库的asp动态网页开发技术。

10


3 2 vbscript1

3.2 VBScript语法基础

  • VBScript是一种完全免费的解释性语言,一种客户端的网页设计语言,能够让网页设计者开发互动多媒体的网页内容。VBScript程序代码是直接插入在HTML文档中,也就是说VBScript必须放在HTML文档中,否者无法执行,并使用<script>标签标示出来。

    • 在网页中使用脚本代码的基本语法格式如下:

      <script language="脚本语言名称" for=“对象名称”event=“事件名称”>

      <!--

      脚本代码

      -->

      </script>

11


1 html vbscript

1.在HTML网页中使用VBScript

  • VBScript脚本代码必须放入<script>……</script)标记中,其格式为:

    <Script Language=“VBScript”>‘VBScript代码’</Script>

    【例3.3】在HTML网页中弹出一个消息框,内容为“Hello,VBScript!”。

    • 程序代码如下:

      <html><head> <title>在HTML网页中使用VBScript</title> </head> <body><script language="VBScript"> alert("Hello,VBScript!")</script> </body>

      </html>

12


2 asp vbscript

2.在ASP网页中使用VBScript

  • 在ASP程序中,VBScript代码要放在<%...%>之间,或放在<script>…….</script>之间,但要在<script language=“vbscript”>中加入“runat=server”。格式为:

    • <%在服务器端运行的VBScript代码%>

      <script language="vbscript" runat=server>

      在服务器端运行的VBScript代码

      </script>

13


2 asp vbscript1

2.在ASP网页中使用VBScript

【例3.2】在ASP页面中输出当前的日期。程序代码如下:

<html><head><title>在ASP网页中使用VBScript</title></head><body><% Response.write"今天是"&Date%></body>

</html>

或将代码<%Response.write"今天是"&Date%>改为如下形式:

<script language="VBScript" runat=server> Response.write"今天是"&Date

</script>

14


3 2 2 vbscript

3.2.2 VBScript调用方式

  • 在VBScript中,事件过程的调用方式有以下几种。

    1. 通过过程名调用事件过程

    • 在VBScript标记调用Sub语句来定义事件过程,并且要求过程名称必须由控件名称、下划线(_)以及事件名称组合而成。语法格式为:

      <script language="vbscript">

      Sub对象名称_事件名称([参数列表])

      脚本代码

      End Sub

      </script>

      【例3-4】利用VBScript编写程序,程序功能通过过程实现,过程的调用利用过程名实现。

15


3 vbscript

16


3 vbscript

2. 通过控件的属性调用事件过程

  • 在Script标记中定义一个通用的Sub过程,然后通过控件的相关属性来调用该过程。语法格式为:

    <script language="vbscript">

    Sub MyPro([参数列表])

    脚本代码

    End Sub

    </script>

    <input type="button" name="Button1" value="将鼠标移动到我上面激活事件" onMouseOver=" MyPro ">

    【例3-5】利用VBScript编写程序,程序功能通过过程实现,过程的调用是通过控件的属性调用事件过程实现。

17


3 vbscript

3. 通过for/event属性调用处理过程

  • 通过设置上面<script>的for属性来指定html页面中的对象,并通过event属性来指定该属性的事件,语法格式为:

    <script language="vbscript" for=“对象名称”event=“事件名称”>

    脚本代码

    </script>

    【例3-6】利用VBScript编写程序,程序功能通过过程实现,过程的调用是通过for/event属性实现。

18


3 vbscript

4. 在标记中直接编写脚本语句

  • 若事件过程比较简单,则可以在定义元素的标记中直接编写脚本语句。若要包含多条语句,用冒号(:)分开各个语句。

    【例3-7】利用VBScript编写程序,程序完成的功能直接编写在脚本语句中。

<html><head>

<title>在标记中直接编写脚本语句</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<body><center>

<form name="form1" method="post" action="">

<input type="button" name="button1" id="button" value="热烈欢迎" onclick='msgbox "欢迎、欢迎、热烈欢迎!" ' language=vbscript>

</form>

<p>如果事件过程比较简单,则可以在定义元素的标记中直接编写脚本</p>

</center>

</body></html>

19


3 2 3

3.2.3基本事件

  • VBScript采用的是面向对象、事件驱动编程机制。

    • 对象:从面向对象程序设计的角度来看,对象是具有属性和方法的实体。

      • 格式:对象名.属性(或方法)

    • 对象的动作则常常要触发事件。事件驱动指的就是通过事件的发生来推动指定程序的执行 。

    • 要执行VBScript脚本,还要激活一个事件,而VBScript的事件比较多,常用的事件如P/76表3-1所示。

20


3 2 31

3.2.3基本事件

  • 在VBScript中常用的事件有如下几种:

    (1)与系统有关的事件

    onLoad:当一个网页被加载时触发。与body或frameset一起使用

    onUnload:当一个网页被卸载时触发。 同上

    onFocus:对象获得焦点时触发。 针对鼠标或键盘操作与表单中文本框,input,select

    onBlur:对象失去焦点时触发。 同上

21


3 vbscript

(2)与鼠标有关的事件

onClick:鼠标单击时触发。

onDblClick:鼠标单双击时触发。

onMouseDown:鼠标按下时触发。

onMouseUp:鼠标弹起时触发。

onMouseMove:鼠标移动时触发。

onMouseOver:鼠标移动到对象上时触发。

(3)与键盘有关的事件

onKeyPress:按键时触发。

onKeyDown:键被按下时触发。

onKeyUp:键弹起时触发。


3 3 vbscript

3.3 VBScript基本元素

3.3.1 VBScript 数据类型

  • 在VBScript,只有一种数据类型,称为Variant,也有叫做变体类型。Variant变量中保存的数据类型称为变量的子类型。

  • 常见的字类型有字符串、数字、日期、逻辑类型。

    Variable=2001 ‘ VBScript会将它当成整数对待

    Variable=“2001” ‘ VBScript会将它当成字符串对待

    Variable=“师范大学” ‘ VBScript会将它当成字符串对待

    Variable=“2012-9-8” ‘ VBScript会将它当日期对待

    具体包含的数据子类型见P/78表3-2


3 3 2 vbscript

3.3.2 VBScript常量

1、直接常量(常数):直接常量也称为字面常量,指的是可以从字面形式上辨别出来的常量,其实就是我们通常说的常数。

  • 常量类型:

    ①两边加双引号(")表示字符串常量。区别字符串常量和数字常量的标志就是看两边是否有双引号。

    • 比如"100"看起来是数字,但实际上是字符串常量。

      ②如果发生引号嵌套,就将内层引号替换为单引号(')或连续两个双引号(""),

    • 比如"ab'cd'ef"或"ab""cd""ef"。不过,内层如果是中文引号则不必替换。

      ③两边加#号表示日期或时间常量。


3 vbscript

2、符号常量

  • 所谓符号常量,指的是用一个具有一定含义的直观的名字来代表一个数值、字符串或日期等常数。

  • 分类:

    • 自定义常量: 须先声明,使用Const语句,语法如下:

      Const 常量名=值

      例如: Const Day=“星期三” ´字符串常量,必须用双引号“ ”括起来

      Const Date=#15/8/2008# ´日期常量,必须用#括起来

      Const PI=3.1415926 ´数值常量

      Const T=true ´逻辑型常量,只有true或false值

    • 内置符号常量

      • 如: vbLongDate就表示以长日期格式显示


3 3 3 vbscript

3.3.3 VBScript变量

  • 所谓变量,就是在程序运行过程中,其值可以被改变的量。

    • 严格说来,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。为了方便引用,我们可以给这个存储单元定义一个名字,这就是变量的名称 。

    • 变量与常量非常类似,只不过常量一经声明其值就不能改变了,而变量在声明后仍可随时对其值进行修改。

  • 在VBScript中只有一个基本数据类型,即Variant,因此所有变量的数据类型都是Variant


3 vbscript

1.变量的命名规则

  • 在VBScript中,变量的命名规则如下:

    (1)变量名必须以字母开头;

    (2)可以使用字母、数字和下划线,但不能使用任何标点符号;

    (3)长度不能超过255个字符;

    (4)不能使用VBScript的关键字,所谓关键字,就是Const、Dim、Sub、End等在语法中使用的一些特殊字符串。


3 vbscript

2、 变量的声明、赋值和引用

  • 在VBScript中使用关键字Dim声明变量,语法格式为:

    Dim 变量名

    例如:dim x dim x, y, z 声明(定义)变量可以使用Dim语句

    如:Dim intA'声明一个变量intA

  • 变量的赋值也与许多高级语言相同,变量放在等号的左边,赋值语句放在等号的右边,赋值语句可以是一个常量(常数),也可以是一个表达式。

    • 语法格式为:变量名=值

      如:intA=10+20*3

  • 变量的引用和常量类似,可以将变量直接赋值给另外一个变量,也可以将变量引用到表达式中。

    • Dim intA , intB , intC '声明3个变量

    • intA=5 '给变量intA赋值

    • intB=5 '给变量intB赋值

    • intC=intA+intB '引用变量intA和intB,将两者之和赋给变量intC

eg3-8.asp 编写一个根据半径计算圆面积的程序


3 vbscript

字符常量

29


3 vbscript

3. 强制声明变量

  • 如果希望强制要求所有的变量必须先声明才能使用,则可以在ASP文件中所有的脚本语句之前添加Option Explicit语句,用法如下:

    <% Option Explicit %>

  • 添加了Option Explicit语句后,如果使用变量前没有预先声明,调试程序时就会报错。


3 vbscript

4.变量的作用范围和有效期

  • 作用范围也称作用域,表示在什么空间范围内可以使用该变量。在VBScript中,变量的作用范围是由变量的声明位置决定的。

    • 过程级变量:如果一个变量在过程或函数内声明,则称其为局部变量或过程级变量,其作用域仅局限于该过程或函数内部,用于临时存放数据。

    • 脚本级变量:如果一个变量在过程或函数外声明,则称其为全局变量或页面级变量,其作用域为整个网页,用于存放整个程序公用的数据,可供当前网页中的各个脚本程序访问。

  • 有效期也称存活期,表示变量从定义开始到最后被撤销的存在时间。

    • 过程级变量的有效期就是该过程的运行时间,过程结束后,变量就随即消失了;

    • 脚本级变量的有效期就是从它被声明那一刻到整个代码的结束。


3 vbscript

数 组

  • 数组代表内存中具有特定属性的若干连续的存储单元,每个单元都可以用来存放数据,根据单元的索引(也称下标)就可以访问特定的存储单元。


3 vbscript

1. 数组的命名、声明、赋值和引用

数组的命名、声明、赋值和引用与上一节讲的变量基本上是一样的,所不同的只是需要将元素的个数(即数组的长度)包含在数组名称之后的括号里。数组声明的语法格式为:

Dim 数组名(下标)

例如:声明一个包含8个元素的一维数组: Dim A(7)

声明一个3行4列的二维数组: Dim A(2,3)

Dim intA(2)‘声明一个元素数为3的数组

intA(0)=1'给第1个数组元素变量赋值

intA(1)=2'给第2个数组元素变量赋值

intA(2)=3'给第3个数组元素变量赋值

  • VBScript数组索引从0开始计数 。


3 vbscript

2.多维数组

  • 多维数组的引用和赋值和一维数组是一样的,只不过括号中的第1个数字表示所在行,第2个数字表示所在列 。

  • 举例:声明一个3行4列的二维数组

    • Dim intA(2,3) ‘声明一个3行4列的二维数组

    • 下面是该二维数组的结构示意图:


3 vbscript

3. 变长数组

  • 动态数组是指在程序运行期间长度可以改变的数组,它使用Dim或ReDim声明,与数组不同的是,动态数组变量后面的括号中可以没有下标。

    例如:Dim A() Redim A()

    • Redim语句与Dim的不同之处在于其数组可以重设数组的维数和大小。

      例如:Redim A(3)

      Redim preserve A(4)

    • 注意:使用Redim重新声明数组后,原有数组的元素值将全部清空,若要保留原有元素值,需要使用preserve关键字。

      例如: <% Redim Preserve intA(5) %>


3 3 4 vbscript

3.3.4 VBScript基本运算

  • VBScript运算符和表达式总述

    • VBScript继承了VB的所有类别的运算符,包括算术运算符、连接运算符、比较运算符和逻辑运算符

      • 要注意运算顺序,先计算算术运算符,其次连接运算符,再次比较运算符,最后计算逻辑运算符。

    • VBScript主要包含三种不同的表达式:

      • 数学表达式(如3+5*7)

      • 字符串表达式(如"ab" & "cd")

      • 条件表达式(如5>3)


3 3 4 vbscript1

3.3.4 VBScript基本运算

1.算术运算符

  • 大部分运算符两边不需要留空格,但是少数容易混淆的运算符两边必须留空格,如Mod。


3 3 4 vbscript2

3.3.4 VBScript基本运算

2. 连接运算符

  • VBScript连接运算符有“&”或“+”两种,用于将两个字符串进行连接。

  • + 运算符也可以用于连接字符串,但只有两个操作数都是字符串时才执行连接运算;

    • 如果有一个操作数是数值、日期或者布尔值,就执行相加运算。此时,如果有一个操作数无法转换成可以相加的类型,就会出错。

    • 如: “456”+” xyx”=“456xyx”

  • & 运算符表示强制连接,不管两边的操作数是字符串、数值、日期还是布尔值,它都会把它们自动转化为字符串然后连接到一起

    • 如:strResult=“ab” & “cd“ ‘结果为 "abcd “


3 vbscript

关于连接符

  • &用来连接字符串

    <%

    C=“中国人民” & “万岁”

    C=“中国人民” & b

    Response.write “a+b=“ & Cstr(c)

    C=“中国”& “人民” & b

    Response.write c & “<p>”

    %>

  • +也可以作为连接符,如

    C=“中国人民” + “万岁”

    数字字符区别,例:

    • “1”+1=2

    • “1”&1=11

    • “1”+“1”=11


3 vbscript

3.比较运算符和条件表达式

  • 常用的比较运算符包括

    • =、<>、>、<、>=和<=

      • 这些运算符执行后的结果为True(真)或False(假)

        • 如:blnResult=5>3 '对两个数字进行比较,结果为True

        • blnResult=#2008-1-1#<#2008-8-8#'对两个日期进行比较,结果为True

  • 比较运算符在实际运算中是没有优先顺序的,按从左到右的顺序进行 。


3 vbscript

4. 逻辑运算符

  • 逻辑运算符是对两个布尔值(True或False)或两个比较表达式进行一系列的逻辑运算,然后再返回一个布尔值结果。

  • 常用的逻辑运算符有And(逻辑与)、Or(逻辑或)和Not(逻辑非),运算规则如下:

    (1)And 表示并且,只有两个操作数都是True的时候,结果才为True,否则为False;

    (2)Or表示或者,只要两个操作数中有一个是True,结果就为True,否则为False;

    (3)Not 表示求反,它是单目运算符,只要一个操作数,当操作数是True的时候,结果为False,当操作数为False时,结果为True。

  • 还有其他几个不太常用的逻辑运算符 :Xor异或、Eqv等价、Imp 隐含


3 vbscript

逻辑运算符示例

源文件

显示结果

比较运算符结果是一个逻辑量(true, false)

例:执行完a=5>3 And "a"<"c"语句后,a的值为:

true


3 vbscript

5. 运算符优先级

  • 当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。运算时,总是先执行括号( )中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。

  • 当表达式包含多种运算符时,顺序是:

    • 算术运算符连接运算符比较运算符逻辑运算符。

      • 所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。算术运算符和逻辑运算符按下列表3-8优先级进行处理:

43


3 4 vbscript

3.4 VBScript控制语句

  • 在前面用脚本语言编写的程序代码都是按书写的顺序执行,但是我们知道在很多情况下,语句的执行顺序是动态变化的,通常与语句在执行过程中所得到的数据结果有关联

    • 例如,在成绩统计业务总,我们可能要根据成绩的分数段进行划分,并按照不同的分数段执行不同的任务。在这些情况下就需要改变程序的执行顺序,这些就是程序控制语句的功能

    • 通常程序设计语言中的控制语句有两大类,就是条件语句和循环语句.

44


3 4 1

3.4.1 条件语句

  • If…Then…Else语句用于判断条件是True或False,然后根据判断结果指定要运行的语句。

  • If语句的几种形式:

    (1) If 条件表达式 Then程序语句 ‘单行结构 eg3-9.asp

    (2) If 条件表达式 Then‘多行结构

    程序语句块

    End If

    (3) If 条件表达式 Then‘双分支

    程序语句块1

    Else

    程序语句块2

    End If

    (4) If 条件表达式1 Then‘多分支 3-9.asp

    程序语句块1eg3-10.html/asp

    ElseIf 条件表达式2 Then

    程序语句块2

    Else

    程序语句块N+1

    End If


3 vbscript

IF语句示例

源文件

显示结果


2 select case

2. Select Case语句

  • Select Case语句是If…Then…Else…End If语句多条件时的另外一种形式,适当使用,可以使程序更简洁方便。

  • Select Case语句语法如下 :

    Select Case 变量或表达式

    Case 结果1

    程序语句块1

    Case 结果2

    程序语句块2

    ……

    Case 结果N

    程序语句块N

    Case Else

    程序语句块N+1

    End Select

【eg3-11.htm/3-10.asp】利用select case语句编写一个能够判断当前日期为星期几


Select

Select语句示例

源文件

显示结果


3 4 2

3.4.2 循环语句

  • 经常地,当编写代码时,我们希望将一段代码执行若干次。我们可以在代码中使用循环语句来完成这项工作。循环语句分三类

    • 在条件变为 false 之前重复执行语句。

    • 在条件变为 true 之前重复执行语句。

    • 按照指定的次数重复执行语句。

  • 在 VBScript 中,我们可以使用四种循环语句:

    • For...Next语句:运行一段语句指定的次数;

    • For Each...Next语句:针对集合中的每个项目或者数组中的每个元素来运行某段语句;

    • Do...Loop语句:运行循环,当条件为 true 或者直到条件为 true 时;

    • While...Wend语句:当条件为true时循环。尽量不要使用这个语句,请使用do...loop语句代替它。

49


1 for next

1. For…Next循环

  • For…Next循环是一种强制型的循环。在循环的过程中,可以指定循环的次数,当到达循环运行次数之后,即退出循环。

    • 语法如下:

      for循环变量counter=初值 to终值 [step 步长]

      语句序列1

      [exit for ]

      语句序列2

      next


For next

For Next循环示例

源文件

显示结果


3 vbscript

  • 【eg3-12.htm/3-11.asp】设计一个能够选择一年的月份的选择框。

52


2 for each next

2. For Each…Next 循环

  • For Each…Next 循环与for……next循环类似,但For Each In……Next不是将语句块运行一定的次数,而是专门用来对集合中的每一项或数组中的每个元素重复执行一系列语句。是对数组和集合中的元素进行枚举(一一列举),当枚举结束后就会退出循环。在不知道集合或数组中的元素的个数时格外有用。其语句格式为:

    For Each 元素 In 集合或数组

    程序语句块

    Next

    • 【eg3-13.htm】利用For Each...Next设计程序实现学生成绩等级判断。


For each next

For Each…Next示例

源文件

显示结果


3 do loop

3. Do…Loop循环

  • Do…Loop循环是当条件为True或条件变为True之前,一直重复执行。

  • 它的语法有如下几种形式 :

    (1)Do While 条件表达式

    程序语句块

    Loop

    (2)Do

    程序语句块

    Loop While 条件表达式

    (3)Do Until 条件表达式

    程序语句块

    Loop

    (4)Do

    程序语句块

    Loop Until 条件表达式


3 do loop1

3. Do...Loop语句

(1)Do While……Loop循环

  • Do While……Loop循环结构在进入循环前就检查条件是否成立。当条件为true时重复执行指定的若干条语句,直到条件变为false为止。格式为:

    【例eg3-14.asp】利用Do While……Loop设计一个计数器。

56


Do loop

Do loop循环示例

3-12.asp 计算1到100的平方和

<% Option Explicit'强制声明变量%>

<html>

<body>

<%

Dim lngSum,I'lngSum用来保存结果,I用来控制循环

lngSum=0'给lngSum赋初值

I=1

Do While I<=100'当I小于等于100时执行循环

lngSum=lngSum+I^2

I=I+1 'I的值增加1

Loop

Response.Write "1到100的平方和=" & lngSum

%>

</body>

</html>


2 do until loop

(2)Do Until……Loop循环

  • Do Until……Loop循环结构也是在循环开始时就检查循环是否成立,当条件为False时重复执行指定的若干语句,直到条件为True为止。格式为:

    【例eg3-15.asp】利用Do Until……Loop设计程序求1到100的累加和。

<% Option Explicit'强制声明变量%>

<html><title>do until...loop</title>

<body>

<%

Dim Sum,m'Sum用来保存结果,m用来控制循环

Sum=0'给Sum赋初值

m=0

Do until m=100'当m等于100时执行循环

m=m+1'm的值增加1

Sum=Sum+m

Loop

Response.Write "1到100的和=" & Sum

%>

</body> </html>

58


3 do loop while

(3)Do ……Loop While循环

  • Do ……Loop While结构首先执行一遍指定的语句块,之后再检查条件成立与否,当条件为true时反复执行,直到条件变为false为止。其格式为:

    Do

    语句块

    Loop While 条件

    【例eg3-16.asp】利用Do ……Loop While设计程序求1到100的累加和。

    <% Option Explicit'强制声明变量%>

    <html><body>

    <%

    Dim Sum,m'Sum用来保存结果,m用来控制循环

    Sum=0'给Sum赋初值

    m=0

    Do

    m=m+1 'm的值增加1

    Sum=Sum+m

    Loop while m<100'当m等于100时执行循环

    Response.Write "1到100的和=" & Sum

    %>

    </body> </html>

59


3 vbscript

(4)Do……Loop Until 循环

  • Do……Loop Until 循环结构首先执行一遍指定的语句序列,之后再检查条件成立与否,当条件为false时反复执行,直到条件变为true为止。其格式为:

    Do

    语句块

    Loop Until 条件

    【例eg3-17.asp】利用Do……Loop Until设计程序求1到100的累加和。

  • <%Dim Sum,m'Sum用来保存结果,m用来控制循环

    • Sum=0'给Sum赋初值

    • m=0

    • Do

  • m=m+1 'm的值增加1

    • Sum=Sum+m

    • Loop until m=100'当m等于100时执行循环

    • Response.Write "1到100的和=" & Sum

  • %>

60


3 vbscript

使用Exit语句强行退出循环

  • 一般情况下,都是满足循环结束条件后退出循环,但有时候需要强行退出循环。在For…Next和Do…Loop循环中,强行退出的语句分别是Exit For和Exit Do。

    • Exit语句也可以用来退出子程序和函数,语句分别为Exit Sub和Exit Function。

  • 不过Exit语句通常是和If语句结合使用的。例如:

    Sum=0

    For I=1 to 100

    lngSum=lngSum+I^2 '如果大于10000,则强行退出循环

    If lngSum>10000thenExit For

    Next

    Response.Write "最后的结果是:" & lngSum

<%Option Explicit'强制声明变量%>

<html><title>exit do</title>

<body>

<% dim sum,m

Sum=0'给Sum赋初值

m=1

Do while m<100

Sum=Sum+m

ifsum>1000thenexit do

m=m+1'm的值增加1

Loop

Response.Write "1+2+3+…+" &m&"时,第一个大于1000的和为"& Sum

%>

</body> </html>

Eg3-18.asp 求1+2+3+…+n的第一个大于1000的和


4 while wend

4. While…Wend循环

  • While…Wend循环是当条件表达式值为True时,执行循环,否则跳出循环,与Do…Loop循环非常相似。

  • 语法如下:

    While 条件表达式

    程序语句块

    Wend

  • 将前面示例中的Do…Loop循环语句替换为如下的语句,执行结果是一样的。

    While I<=100

    lngSum=lngSum+I^2

    I=I+1

    Wend

    • 其含义是:只是条件式成立,就绕循环执行。而每循环一次,需重新判断条件式。


4 while wend1

4. While...Wend语句

【例eg3-19.asp】求使用while wend循环输出数据。

<html><title>while wend</title>

<body>

<%

i=1

while i<=5

response.Write "这是第 "& i &" 圈<p>"

i=i+1

wend

%>

</body> </html>

63


3 vbscript

5. 循环嵌套

  • 允许的循环嵌套 不允许的循环交叉

Vbscript允许在一个循环结构的循环体内包含另一个循环语句结构,即允许循环嵌套而实现多重循环。

【例eg3-20.asp】编程实现任何两个一位数相乘,并将结果保存在一个表格中。


3 vbscript

<html><title>循环嵌套</title>

<body>

<table border=1>

<%

dim i,j,str

for i=1 to 9

str="<tr>"

for j=1 to 9

str=str &"<td>"&i&"*"&j&"="&i*j&"</td>"

next

str=str&"</tr>"

response.Write str

next

%>

</body> </html>

65


3 vbscript

  • 例3-15.asp:有100个人吃100个馒头,大人1人吃4个,孩子4人吃1个,问有多少个大人和多少个孩子?(提示:使用嵌套循环和条件语句)

<html><head>

<title>大小和尚吃馒头问题</title>

</head>

<body>

<%

Dim I,J,ren,mantou

For I=1 To 100 '大人从1到100循环

For J=1 To 100 '小孩从1到100循环

ren=I+J '计算总人数

mantou=I*4+J*0.25 '计算总馒头数

Ifren=100 And mantou=100Then

Response.write"<br>大人=" & I & "&nbsp;小孩=" & J

End If

Next

Next%>

</body></html>

66


3 vbscript

3.5 过程与函数

  • 过程是拥有一个名称并可作为单元来执行的语句块。

    • 利用函数可以方便地完成某些功能 ,但是有时需要完成一些特殊的功能,此时没有现成的函数可用,就需要利用过程自己编制来函数。

  • 在VBScript中,过程有两种

    • 一种是Sub子程序

    • 一种是Function函数。

  • 两者的区别在于:Sub子程序只执行程序而不返回值,而Function函数执行程序后会返回值。


3 5 1 sub

3.5.1 Sub过程(子程序)

  • Sub子程序的语法如下:

    Sub 子程序名([形式参数1,形式参数2,…])

    ……

    End Sub

  • 调用子程序的两种方式:

    (1)Call 过程名([实际参数1,实际参数2,…])

    (2)过程名 [实际参数1,实际参数2,…]


3 vbscript

过程 程序示例

例3-5.asp

<% Option Explicit '强制变量声明%>

<html><body>

<%

Dim intM,intN'intM和intN为实际参数

intM=3

intN=4

Call mySquare(intM,intN)'调用子程序,显示结果

'下面是子程序,用来计算两个数的平方和

Sub mySquare(intA,intB)'intA和intB是形式参数

Dim lngSum

lngSum=intA^2+intB^2

Response.Write "3和4的平方和是:" & lngSum

End Sub

%>

</body></html>

显示结果


3 5 2

3.5.2 函数

  • 函数即Function过程,是包含在Function和End Function语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。

    • Function 返回值的数据类型总是Variant。

70


3 5 2 function

3.5.2 Function函数

  • Function函数的语法如下:

    Function 函数名([形式参数1,形式参数2,…])

    ……

    End Function

  • 调用函数

    • 变量= Function 函数名(参数1,参数2,…)

    • 函数可以向变量一样引用和参与运算

      • 【例eg3-21.asp】编写两个数相加的子程序


3 5 3

3.5.3 函数与过程调用

1. 调用同一文件的过程

  • 当函数与过程与被调用程序代码在一个文件中的调用方式可以有以下几种方式。

    (1)直接调用方式

    • 调用函数与过程时,直接输入过程名及所有参数值,参数值之间使用逗号分隔,参数不用括号,是一种常用方式。语法格式为:

      • name [argumentlist]

        • 例如:my_sub x,y '直接调用sub子程序,这种方法最常用。

          (2)Call语句

    • 另外一种调用方法,就是使用 Call 语句,但如果使用了 Call 语句,则必须将所有参数包含在括号之中,语法格式:

      • call name [(argumentlist)]

        • 例如:call my_sub(x,y) '使用call语句调用sub子程序。

    • 注意:使用call语句调用函数或内部函数时,函数返回值都会被丢弃。

      (3)函数的调用

    • 调用function过程时,函数名必须用在变量赋值语句的右端或表达式中。如:

      • Sum1=my_function1(3,9,5) '直接引用函数名进行调用

      • sum2=my_function2(3)+100

        【例3-22】编程实现过程的定义与使用。

72


3 vbscript

73


3 vbscript

2.调用外部文件的过程

  • 当要调用外部文件的函数或过程时,可以使用html语言的注释标记,利用#include来进行调用,调用时注意路径的设置。

    【例eg3-23.asp】编程实现调用另外一个文件中的过程。

<html><title>调用外部函数</title>

<body>

<%

function my_func(x,y)

dim sum

sum=x+y

my_func=sum

end function

%>

</body></html>

<html><title>调用外部函数</title>

<!--#include file="eg3-23_1.asp"-->

<body>

<%

dim a,b,c

a=5

b=6

c=my_func(a,b)

response.Write "a+b="&c

%>

</body></html>

74


3 vbscript

3.6 基本输入输出函数

3.6.1 MsgBox函数

  • 功能:用来产生一个消息选择框,等待用户做出选择。

  • MsgBox函数的语法如下:

    • MsgBox(prompt,[,title][,button] [,helpfile, context])

      • Prompt: 字符串表达式,显示在消息框中的字符串信息,其最大长度约1024字符

      • Tilte:字符串表达式,显示在消息框标题栏上的文字

      • Button:数字表达式,指定消息框的外框和按钮类型,默认0。P/101

      • Context:数字表达式,用于标识由帮助文件的作者指定给某个帮助主题的上下文编号。

    • 常用格式:MsgBox ("提示信息,[数值]")

      • 【例3-16.htm】设计一个MsgBox选择框,用于用户确认所选择的信息。

        • 脚本程序代码如下:

<script language="vbscript"> dim cc cc=msgbox("您选择的是A类产品,确认购买吗?",3)</script>,

75


3 6 2 inputbox

3.6.2 InputBox函数

  • 功能:用于产生一个接收用户输入信息的输入框。并返回文本框的内容

    • InputBox函数的语法如下:

      • String=InputBox(prompt[,title][,default] [,xpos] [,ypos] [,title] [,helpfile, context])

        • String: 字符串表达式,显示文本框中的内容,即用户输入信息

        • Xpos:数字表达式,用于指定对话框的左边缘与屏幕左边缘的水平距离。若省略,则水平居中

        • Ypos:数字表达式,垂直距离,省略距下边缘约1/3

          • 简单使用如:Inputbox("提示信息")

            【例3-17.html】设计一个InputBox输入框,用于接收并判断用户输入的密码内容。

            脚本程序代码如下:

<script language="vbscript">

Dim aa

password="123456"

aa=inputbox("请输入密码")

Do while aa<> password

aa=inputbox("密码不正确,请重新输入!")

Loop

document.write("密码正确,进入页面!")

</script>

76


3 7 vbscript

3.7 VBScript常用函数

  • 所谓函数,指的是由若干语句组成的程序模块,它可以实现一个特定的功能,并返回一个函数值。

  • 函数分类:

    • 内部函数即系统函数,如Time( ).

    • 自定义函数:为了实现某个特定功能,自己编写的程序模块。

  • 使用函数时要特别注意函数参数的个数和类型。


3 7 1

3.7.1数据类型转换函数

  • VBScript会自动转换数据子类型以满足计算的需求,但有时候,也需要使用转换函数来强制转换数据子类型。

  • 常用的转换函数 :

    • CStr(variant) :将数值表达式表示的数字转换成字符串

      • 例如:Str(100) 结果为:“100”

    • CInt(variant) :转化为整数子类型 如: cint(“34”) 结果34

    • CDate(variant) :转化为日期子类型

    • Asc(<字符串表达式>):字符转换成字符代码。返回一个整型数,代表字符串表达式表示的字符串首字母的字符代码。

      例如:Asc("a") 结果为:97(即小写字符a的ASCII码)

    • Chr(<字符代码>):字符代码转换成字符。返回指定的字符代码相关的字符。

      例如:Chr(97) 结果为:a (即在ASCII码中的小写字符a)


3 vbscript

连接符连接字符串,数字作为字符连接须强制转换

转换函数示例(cstr)

源文件

显示结果


3 7 2

3.7.2字符串函数

(1)字符串长度检测 Len

格式:Len(字符串)

功能:返回字符串中的字符的个数。

例如:Len(" VBScript函数") 结果为:10

(2)截取字符串

左截取:Left (字符串,截取的个数)

右截取:Right(字符串,截取的个数)

指定位置截取:Mid(字符串,截取开始位置,截取个数)

例如:

Left("VBScript函数有哪些",3) 结果为:VBS

Right("VBScript函数有哪些",3) 结果为:有哪些

Mid(“VBScript函数有哪些”,5) 结果为:ript函数有哪些

Mid("VBScript函数有哪些",5,5) 结果为:ript函


3 vbscript

(3)删除空格

左边空格:Lrtim(字符串)

右边空格:Rtrim(字符串)

两端空格:Trim(字符串)

例如:

  • Lrtim(“ VBScript函数 ”) 结果为:“VBScript函数 ”

  • Rtrim(“ VBScript函数 ”) 结果为:“ VBScript函数”

  • Trim(“ VBScript函数 ”) 结果为:“VBScript函数”

    (4)大小写转换

    LCase(string)(大小)、UCase(string) (小大)

  • Replace(string, find, replacewith)

    • 例:Replace(" abcdef ","c","")是将字符c替换为空

  • InStr(string1, string2) :返回字符串1在字符串2中的位置值


  • 3 vbscript

    字符串函数示例

    源文件

    显示结果


    3 vbscript

    组成一维数组:c(0)=“ab”,c(1)=“cd”,c(2)=“ef”

    关于字符串函数

    <%

    C=left(“abcd”,2) ‘从左边开始取2个字符

    C=right(“abcd”,2) ‘从右边开始取2个字符

    C=len(“abcd”) ‘获取字符串的长度

    C=Trim(“abcd “) ‘去掉字符串两边的空格

    C=Rtrim(“abcd_ _”)去年字符串右边的空格

    C=split(“ab/cd/ef”,”/”) ‘拆分函数

    C=instr(“ab”,”ab”) ‘查找函数

    %>

    例:a=Trim(" vbscript") & Rtrim(" good") 语句后,a的值:

    "vbscript good"


    3 7 3

    3.7.3数学运算函数

    (1)取绝对值 Abs(x)

    • 功能:返回x的绝对值。 例如:Abs(-3)=3

      (2)取整 Int(x) ,Fix(x)

    • 功能:返回x的整数部分。若x为负数,则Int返回小于或等于x的第一个负整数,Fix返回大于或等于x的第一个负整数。

      例如:Int(4.8)=4 Fix(4.8)=4 Int(-4.8)=-5 Fix(-4.8)=-4

    84


    3 7 31

    3.7.3数学运算函数

    (3)四舍五入

    • Round(表达式[,小数位数])

      • 功能:返回表达式按指定的小数位数进行四舍五入后的结果,若缺省小数位数,则四舍五入为整数。

        例如: Round(3.14159,2)=3.14 Round(3.14159)=3

        (4)开平方 Sqr(x)

        功能:返回x的平方根。要求x大于或等于0。

        例如:Sqr(25)=5 Sqr(23)=4.79583152331272

    85


    3 vbscript

    (5)计算数学表达式Eval(数学表达式)

    • 功能:计算并返回指定数学表达式的值。

      例如:Eval(15+28/4)=22

      (6)随机数 Rnd[(x)]

    • 功能:返回一个小于1但大于或等于0的随机数。若x<0,则每次产生的随机数均相同;若x>0或缺省,则产生与上次不同的新随机数;若x=0,则本次产生的随机数与上次产生的随机数相同。

      例如:Rnd(-1)=.224007 Rnd(1)=3.584582E-02

    86


    3 7 4

    3.7.4 日期和时间函数

    (1)返回系统当前的日期及时间:Now()

    (2)返回系统当前的日期:Date()

    返回系统当前日期中的年份:Year(date)

    返回系统当前日期中的月份:Month(date)

    返回系统当前日期中的日期:Day(date)

    返回系统当前日期中的星期数:Weekday(date[,start])

    (3)返回系统当前的时间:Time()

    返回系统当前的时间中的小时数:Hour(time)

    返回系统当前的时间中的分钟数:Minute(time)

    返回系统当前的时间中的秒数:Second(time)

    例如:

    Document.write(Date) 结果为:2008-8-20

    Document.write(Time) 结果为:22:16:26

    Document.write(Now) 结果为:2008-8-20 22:16:26

    【例】在页面中显示系统当前的时间。

    脚本程序代码如下: <%=now%>

    87


    Bc3 10 asp

    日期函数示例 bc3-10.asp

    源文件

    显示结果

    返回日期和时间函数Now()


    3 7 5

    3.7.5 检验函数

    • 很多时候需要判断一个变量究竟是什么数据子类型 ,此时就需要用到检验函数。

    • 常用的检验函数

      • IsNumeric(variant) :如果可以转换为数值,则返回True

      • IsDate(variant) :如果可以转换为日期,则返回True

      • IsArray(variant) :如果是数组,则返回True

      • IsNull(variant) :如果不包含任何有效数据,则返回True


    3 vbscript

    数组函数

    • 常用数组函数 :

      • UBound(arrayname[, dimension])

      • Split(string[, delimiter])

      • Join(arrayname [, delimiter])

      • Array(arglist)


    3 vbscript

    格式化函数

    • 需要将数值或日期按指定的格式显示 ,此时就需要用到格式化函数。

    • 常用的格式化函数 :

      • FormatNumber(number [, decimal]) :返回格式化后的数值。如:

        FormatNumber(3.1415926,3),返回3.141

      • FormatDateTime(Date[, namedFormat]) :返回格式化后的日期和时间字符串。 如

        FormatDateTime(#2008-9-28 12:39:32#,1),返回"2008年9月28日"


    3 vbscript

    3.8 网页及浏览器对象 (补)

    • 网页浏览器为VBScript脚本提供了一组可以被调用的对象集合,被称为脚本对象模型。IE浏览器的脚本对象模型是一种层次结构,如图所示。下图 IE浏览器的脚本对象模型


    1 window

    1.Window对象

    window对象表示浏览器中一个打开的窗口。通过引用该对象的属性可以控制脚本中其他对象的属性,进而控制整个网页的外观以及对事件的响应。

    使用Window对象可以获得当前窗口的状态信息、文档信息、浏览器的信息,还可以响应发生在IE中的事件。

    window对象常用的属性、方法和事件如下:

    (1)Alert方法

    格式:alert("消息内容")

    功能:用来产生一个弹出式的消息框,其图标为一个警告标识。

    【例3-18.html】使用alert方法产生一个消息框。程序代码如下:

    <body onload="alert('欢迎访问本网站!')">

    (2)Prompt方法

    格式:Prompt("提示信息")

    功能:用来产生提示框。

    例如:Prompt("请输入您的姓名:")

    <body onload="alert('欢迎访问本网站!')">

    <script language="vbscript">

    document.write(Prompt("请输入您的姓名:") )

    </script>


    3 vbscript

    (3)Open、Colse方法

    Open用来打开一个页面。 3-19.html

    Close用来关闭一个页面。

    例:<body onload=window.open ("http://www.sina.com","new", "width=280, height=120, status=yes")>

    <a href="VBScript:window.close()">关闭本窗口</a

    (4)Status属性

    更改浏览器状态栏的文字。

    例如:window.Status=“欢迎访问本网站!”

    (5)OnLoad、OnUnload事件

    OnLoad事件是在页面完全传递到浏览器时发生的事件,OnUnload事件

    是当离开页面时发生的事件。

    例如:<body onunload="alert('欢迎下次再访问本站!')">


    2 document

    2.Document对象

    Document对象代表了当前浏览器窗口中的HTML文档,它是脚本对象模型中最为重要的对象。可以通过该对象检测HTML文档中各元素的状态(比如,颜色、字体,发生的事件等),并且可以更改这些元素的状态。

    (1)LastModified属性

    使用lastModified 属性可以在页面上自动产生最后修改页面的日期。

    例如:document. Write(document.lastmodified)

    (2)write方法和writeln方法

    使用Write方法可以动态地在 HTML文档中写入新的 HTML代码,写入的内容可以是 HTML代码,即可以包含有 HTML标记。

    例如:document. Write("<font color=´red´>这是我做的网页</font>")

    write方法和writeln方法的区别在于writeln方法在输出字符串末尾添加了回车标志。

    (3)document对象的事件

    Document对象的事件中常见的有:click,dblclick、keydown、keypress、keyup、mousedown、mouseover、mouseout、mouseup等。


    3 vbscript

    思考题

    • VBScript的事件过程的调用方式有哪几种?

    • 编写一个事件过程实现两数相加,并通过按钮控件属性来调用该事件过程。参考例3-5

    • 完成网上作业题


    3 vbscript

    补充实验

    • 100和尚吃100个馒头(大和尚每人4只,小和尚4人1只)

      <% dim x,y

      For x=0 to 25

      for y=0 to 100

      if 4*x+0.25*y=100 and x+y=100 then

      response.write “大和尚有:“& x &”个<br>”&”小和尚有:“ &y”个<br>

      End if

      Next y

      Next x

      %>

    • 100元买100只鸡

    <% dim x,y,z ’百元买百鸡(母鸡每只3元,公鸡2元,小鸡0.5元)

    For x=0 to 33

    for y=0 to 50

    for z=0 to 100

    if 3*x+2*y+0.25*z=100 and x+y+z=100 then

    response.write “母鸡有:“& x &”只<br>公鸡有:“ &y”只<br>,小鸡有“ &z “只”

    End if

    Next z

    next y

    Next x

    %>


  • Login