书签 分享 收藏 举报 版权申诉 / 30

类型VBScript程序控制.docx

  • 文档编号:2812918
  • 上传时间:2022-11-15
  • 格式:DOCX
  • 页数:30
  • 大小:336.33KB

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并不是同一个变量,在内存中有不同的内存单

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
VBScript 程序控制
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:VBScript程序控制.docx
链接地址:https://www.bdocx.com/doc/2812918.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

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

收起
展开