VBScript程序控制.docx

上传人:b****6 文档编号:2812918 上传时间:2022-11-15 格式:DOCX 页数:30 大小:336.33KB
下载 相关 举报
VBScript程序控制.docx_第1页
第1页 / 共30页
VBScript程序控制.docx_第2页
第2页 / 共30页
VBScript程序控制.docx_第3页
第3页 / 共30页
VBScript程序控制.docx_第4页
第4页 / 共30页
VBScript程序控制.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

VBScript程序控制.docx

《VBScript程序控制.docx》由会员分享,可在线阅读,更多相关《VBScript程序控制.docx(30页珍藏版)》请在冰豆网上搜索。

VBScript程序控制.docx

VBScript程序控制

单元八VBScript程序控制

[学习目标]VBScript的程序构成;过程与函数的定义、调用与参数传递;判断结构与选择结构的使用;循环结构程序的编制;错误的处理。

世界上的事物总是千变万化的,也是相互联系的。

因此我们在处理任何一件事务时总会面临着判断与选择;有时候我们还不得不重复着某些事务,程序的设计也同样如此。

前面章节我们所学习的程序应该说是非常简单的,大多数程序的共同特点是脚本运行时是从上到下顺序执行程序中的所有指令,总是终止于最后一行。

事实上,顺序结构只是VBScript程序结构中的一种,与其他语言一样,VBScript也具备三种基本的程序结构:

顺序结构、分支结构与循环结构。

同时过程与函数又是构成VBScript脚本的基本逻辑单元,所以要想真正学会学好VBScript编程,必须要学会如何使用这些程序结构对程序进行控制。

8.1VBScript过程与函数

[实例说明]移动的文字

图8-1文字的移动

在网页设计软件中也具备制作滚动字幕的功能,但利用VBScript也可以实现。

网页看起来很简单,单击“试试看”按钮后,标题“友缘相聚”即会自左向右移动,到达边缘后又会回到右侧继续移动。

移动过程中当鼠标指向该文字后,文字会重新回到起始位置再移动(图8-1)。

[代码分析]

代码如VBS08_01.htm所示,这是一个比较复杂的脚本。

文字对象使用Div来定义,同时定义了一些显示样式,名称为divMove。

整个脚本代码由两个过程和一个函数构成:

函数Move()—实现对象divMove(待移动的文字对象)的移动,移动实际上是通过不断地改变divMove对象的posleft属性来实现的:

divMove.style.posleft=divMove.style.posleft-10

文字的循环移动中使用了Windows对象的setTimeOut方法,每隔0.05秒调用函数Move()自身一次。

代码中使用的判断结构来实现文字移动到边缘时的复位。

过程Button1_onClick—响应按钮Button1单击时的过程脚本,该脚本实际上只有一句,启动文字移动过程。

过程divMove_onMoveOver—鼠标指向divMove文字对象时的过程脚本,其目的是将divMove对象复位重新开始移动。

本网页中还使用了表单对象,用于定义一个命令按钮以启动文字的移动。

VBS08_01.htm代码(移动的文字)

移动的文字

absolute;top:

10%;text-align:

center;

font-size:

30;font-weight:

bold;color:

#ff4678;">

友缘相聚

functionmove()

IfdivMove.style.posleft=0then

divMove.style.posleft=700anddivMove.style.posleft=divMove.style.posleft+0

Else

divMove.style.posleft=divMove.style.posleft-10

Endif

Settimeout"move()",50

endfunction

subdivMove_onmouseover

divMove.style.left=700

divMove.style.posleft=divMove.style.posleft+null

endsub

subbutton1_onclick

Settimeout"move()",50

endsub

[相关知识]

函数或过程是VBScript程序的基本组成单元,它一方面可以使程序有清晰的结构;另一方面也提高了程序的效率。

从上面的实例可以看出,无论是函数还是过程都具有一定的结构。

函数与过程必须先定义后调用,而且一经定义即可多次调用,提高了脚本的效率。

过程的定义:

Sub过程名[(参数1,参数2,……参数n)]

过程体

EndSub

函数的定义:

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

函数体

函数名=表达式

EndFunction

在进行过程与函数的定义时要注意以下几点:

(1)过程名与函数名必须符合VBScript标识符的有关规定

(2)与内置函数一样,函数与过程都可以带若干个参数,参数间以逗号隔开,这些参数代表的是传递给过程或函数进行处理的数据,称为形式参数(形参)。

当然也可以不带参数,此时“()”可以省略。

(3)在进行函数定义时,一般需要有“函数名=表达式”,将运算的结果送到函数名中以返回给调用程序。

(4)由于VBScript也是属于面向对象的语言,因此也有许多事件、方法是以过程的形式出现的,对于这些过程其名称与参数都是固定的,用户不能随便修改,如实例中的divMove_onmouseover过程。

过程的调用:

过程的调用基本有两种方式:

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

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

对于事件过程的调用与一般的过程调用不同,它是与事件联系在一起的,只有当该事件发生时,相应的事件过程才会执行。

关于事件过程详见单元九。

过程调用也属于VBScript语句,因此也应该放置在脚本之间。

调用语句中出现的参数通常称为实际参数(实参),其与形参应保持一一对应的关系:

位置、类型、个数。

函数的调用:

函数的调用与VBScript的内置标准函数的调用方法相同,即函数只能出现在表达式中,不能以单独的语句形式出现。

参数的传递与过程调用相同。

VBS08_02.htm是一个过程与函数使用的实例。

这是一个可以随机生成10以内加减的小学生算术题的程序。

整个程序由一个主控程序、两个函数与一个过程构成。

rndNumber随机生成一个10以内的整数,rndOperator随机生成加法或减法算符,showMsg(strMsg)显示所生成的算式。

主控程序首先调用rndNumber与rndOperator函数以生成两个操作数与算符,接着要判断所生成算式的合法性(运算结果不能为负数),如不合法则重新生成(通过一个循环结构)。

生成合法的算式后,再调用showMsg过程显示在页面上。

在进行函数或过程定义时,可以包括一个或多个参数,这些参数是提供给过程或函数进行处理的数据。

但由于在函数或过程在被调用之间并不知道这些参数的具体值,只有在被调用时才能确定,因此,将这些参数称为“形式参数”(形参)。

当然形式参数并不是必需的,有时候也可以定义无参数的过程或函数。

例如在VBS08_02.htm中,定义的信息显示过程:

subshowMsg(strMsg)中的strMsg即为一个形式参数。

当一个过程或函数在定义时使用了形式参数,那么在调用该过程(函数)时就必须提供相应的数据,这些数据通常被称为“实际参数”(实参)。

如:

showMsgstr1中的str1即为实参。

实参可以是具体的值,也可以是表达式。

VBS08_02.htm代码(小学生算术题)

小学算术题

functionrndNumber

randomize

rndNumber=int(10*rnd)

endfunction

functionrndOperator

dimrndOp

randomize

rndOp=int(2*rnd)

ifrndOp=1then

rndOperator="+"

else

rndOperator="-"

endif

endfunction

subshowMsg(strMsg)

document.writestrMsg

document.write

endsub

dimnum1,num2,Op1,result,str1

do

num1=rndnumber

op1=rndOperator

num2=rndnumber

ifop1="-"then

result=num1-num2

else

result=num1+num2

endif

loopuntilresult>=0

str1=str1&num1&op1&num2&"="

showMsgstr1

[知识扩展]

在VBScript中参数的传递有两种方式:

一种是值传递,另一种是地址传递。

值传递是直接将参数的值传递给过程(函数),因此在过程(函数)中对该值的改变不会影响调用程序中的同变量的值;而地址传递是将参数的地址传递给过程(函数),在过程(函数)中对该变量值的任何改变都会反映到调用程序中,通过这种方式可以将过程(函数)处理的结果带回。

如果使用了地址传递的参数传送方式,在进行定义时,形参前必须加上“ByRef”关键字。

VBS08_03.htm代码(变量的作用域)

变量的作用域

Dimx

x=10

FunctionIncrement(lVar)

Dimy

lVar=lVar+1

y=lvar

Document.write"在函数Increment中Y的值是:

"&Y&"
"

Increment=lVar

EndFunction

FunctionDecrement(lVar)

lVar=lVar-1

Decrement=lVar

EndFunction

变量作用域

Dimy

y=20

Document.Write"X、Y现在的值分别是:

"&x&""&y&"
"

Document.Write"通过Increment函数的X返回值是:

"&Increment(x)&"
"

Document.Write"通过Decrement函数的X返回值是:

"&Decrement(x)&"
"

Document.Write"现在的X值是:

"&x&"
"

Document.Write"现在的Y值是:

"&y&"
"

先看一个实例,如VBS08_03.htm,程序运行结果如图8-2所示。

请特别注意两个变量X、Y的变化情况:

在函数定义之外首先定义了变量X、Y,然后将X的值传递到函数中进行处理。

在函数Increment中又定义了一个同名变量Y,将lVar的值送到Y中并显示(12),此Y与函数之外的Y并不是同一个变量,在内存中有不同的内存单

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1