首页 百科知识 VBScript过程和函数

VBScript过程和函数

时间:2022-10-15 百科知识 版权反馈
【摘要】:一种是Sub过程,另一种是Function函数。过程和函数的命名规则与变量名命名规则相同。[exit sub]End Sub其中参数是指由调用过程传递的常数、变量或表达式。exit sub用于强制跳出过程。)方法2:过程名 参数1,参数2,……在第5章中已经提到,可以使用JavaScript和层制作菜单。程序清单和执行结果如下。

6.2.4 VBScript过程和函数

前面学习了VBScript的内置函数,利用这些内置函数可以非常方便地完成某些功能。但要完成某些特定功能时,就只能自己编制过程或函数来实现这些功能。

一种是Sub过程,另一种是Function函数。两者的区别在于:Sub过程只是执行程序语句而没有返回值;Function函数可以将执行代码后的结果返回给请求程序。过程和函数的命名规则与变量名命名规则相同。

1. Sub过程

1)声明Sub过程的语法

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

……

[exit sub]

End Sub

其中参数是指由调用过程传递的常数、变量或表达式。如果Sub过程无任何参数,Sub过程名后面也必须包含空括号( )。exit sub用于强制跳出过程。

Sub 过程名( )

……

End Sub

2)Sub过程调用的两种方式

方法1:Call 过程名(参数1,参数2,……)

方法2:过程名 参数1,参数2,……

注意:用Call语句调用过程时参数需要带有括号,而用子过程名直接调用时参数不用括号。

3)过程实例

用过程实现求任意两个数的最小公倍数。

--------------------------- minibs.asp ----------------------------

<%

Dim m,n

m=14

n=16

sub minibs(a,b)

if a<=b then max=b

if a>b then max=a

for i=max to a∗b

if I mod a=0 and I mod b=0 then

Response.write I   'I是a和b的最小公倍数

exit for

end if

next

end sub

call minibs(m,n)    '第一种调用过程的方法

Response.write “<br>”

minibs m,n       '第二种调用过程的方法

%>

--------------------------------------------------------------------

调试该ASP网页程序,两次调用过程,结果都输出:112。

在第5章中已经提到,可以使用JavaScript和层制作菜单。在这一节,我们把编辑菜单写成一个过程,在调用此过程的时候使用不同的参数就可以得到不同的菜单,体会过程的“一次编写,多次调用”的优点。程序清单和执行结果如下。

---------------------------清单6-7 6-7.asp --------------------------

<html>

<head>

<title>使用层和过程技术制作菜单</title>

<script language="javascript">

function disp(obj)

{if (obj.style.visibility=="visible")

{obj.style.visibility="hidden";}

else

{obj.style.visibility="visible";}

}

</script>

<style>

·caiDan{position:absolute;

z-index:2;

visibility: hidden;

background-color: #FFFFFF;

layer-background-color: #FFFFFF;

border: 1px solid #ff0000;

filter: Alpha(Opacity=80);}

</style>

</head>

<body>

<%

Sub menu(title,content)'定义过程

Response.write "<table width=200 border=0 align=center cellpadding=0

cellspacing=0><tr bgcolor=#99CC00><td height=30 style='cursor:hand'

onClick='disp("&title&")'>"&title&"</td> </tr><tr

height=0><td><div id="&title&" class='caiDan' >"&content&"

</div></td> </tr></table>"

End Sub

'四个变量作为两次调用函数的参数

Dim str1,str2,str3,str4

str1="用户控制面板"

str2="<span style= line-height:20px> 更改用户头像<br>更改用户密码<br>个人

资料修改<br>所发表的主题帖子<br>用户发表的回复帖</span>"

str3="风格设置"

str4="<span style= line-height:20px> 默认风格<br>青青河草<br>橘子红了<br>

紫色淡雅</span>"

%>

<!-- 下面两次调用menu过程,等到两个不同的菜单 -->

<table><tr>

<td><%Call menu(str1,str2)%></td>

<td><%Call menu(str3,str4)%></td>

</tr></table>

</body>

</html>

--------------------------------------------------------------------

从这个例子可看出:HTML元素中可以调用JavaScript函数,如<td……onClick='disp("&title&")'……</td>;ASP代码段可以嵌入到HTML代码里,例如,<td><%Call menu(str1,str2)%></td>;HTML代码也可以出现在ASP的输出语句中,例如,Response.write "<table width=200 border=0……>……";一个ASP文件可以含有多个ASP代码段。

本例调试结果如图6-15所示。

img421


图6-15 使用层和过程技术定义菜单

在过程menu中,只有一条语句Response.write,这条语句的内容看起来很复杂,其实很容易理解:

(1)……<div id="&title&"class……把第一个参数title作为放置菜单内容层的id,这样在多次调用过程时,每个层的id都不一样,当然是在菜单的名称不一样的前提下;

(2)……onClick='disp("&title&")'……在鼠标点击菜单标题单元格时就把层变为显示或隐藏;

(3)……'>"&title&"</td> </tr>……把第一个参数作为菜单的标题;

(4)……class='caiDan'>"&content&" </div>……把第二个参数作为菜单的内容。

可以通过浏览图6-15所示的结果,与源文件对照来理解此过程的定义与调用。

2. Function 函数

1)声明函数的语法

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

……

[exit function]

函数名=函数返回值

End Function

与Sub过程类似,其中“参数1,参数2,……”是指由调用Function传递的常数、变量或表达式。如果Function无任何参数,则 Function函数名后面也必须有空括号( )。“exit function”是强制跳出函数,“函数名=函数返回值”即对函数名赋值,这个值就是函数的返回值,这也是函数与过程不同的地方。

2)函数的调用方法

调用函数时,函数名必须放在赋值语句的右边或表达式中。格式如下:

变量=函数名(参数)

Response.write 函数名(参数)

3)使用函数实例

例如,采用函数的方法,求两个数的最大公约数。

----------------------------- maxys.asp -----------------------------

<%

Dim x,y

x=21

y=28

Function maxys(a,b)

If a<b then

small=a

else

small=b

end if

for j=small to 1 step -1

if a mod j=0 and b mod j=0 then

exit for

end if

next

maxys=j        ‘j是a和b的最大公约数

end function

Response.write maxys(x,y)

%>

--------------------------------------------------------------------

调试该ASP网页,输出结果为:7。

有时候需要在网页中显示某些特殊字符,例如,<>等与HTML标记符是相同的符号时,浏览器会自动将<>内的内容解释为HTML标记符,因此要用字符实体来替换这些特殊字符。

例如,要在网页上显示"<font color=red>abc</font>"这个字符串时,若直接用Response.write "<font color=red>abc</font>"会得不到想要的结果,得到的是一个红色的"abc",用字符实体来替换这些特殊字符:"&lt;font color=red &gt;abc&lt;/font&gt; "。同样,在设计的论坛中,用户的留言含有这些特殊的字符时也不能正常显示,甚至会导致网页不能正常显示。因此,经常要把这些特殊字符替换为字符实体来显示,非常有必要定义一个有这种功能的函数。

下面例子中的函数把一些常用的特殊字符替换为字符实体,也可以看出申明和调用Function函数的一般方法。

---------------------------清单6-8 6-8.asp--------------------------

<HTML>

<HEAD>

<TITLE> 函数的定义和调用 </TITLE>

</HEAD>

<BODY>

<%

Function myReplace(myString)'

myString=Replace(myString,"&","&amp;")'替换&为字符实体&amp;

myString=Replace(myString,"<","&lt;") '替换<为字符实体&lt;

myString=Replace(myString,">","&gt;")'替换>为字符实体&gt;

myString=Replace(myString,chr(13),"<br>")'替换回车符为换行标记<br>

myString=Replace(myString,chr(32),"&nbsp;")'替换空格符为字符实体

&nbsp;

myString=Replace(myString,chr(9)," &nbsp;&nbsp;&nbsp;&nbsp;")

'替换Tab缩进符为四个空格

myString=Replace(myString,chr(39),"&acute;")'替换单引号为字符实体

&acute;

myString=Replace(myString,chr(34),"&quot;")'替换双引号为字符实体

&quot;

myReplace=myString           '返回函数值

End Function

Dim str

str="<font color=red>abc</font>"

Response.write str  '得到的是一个红色的“abc”

Response.write"<br>"

Response.write myReplace(str)'替换为字符实体,得到正确的结果

%>

</BODY>

</HTML>

--------------------------------------------------------------------

调试结果如图6-16所示。

img422


图6-16 6-8.asp的运行结果

3. 过程和函数的布置

自定义过程和函数可以放置在ASP文件的任意位置上,也可以放在另外一个ASP文件中,然后在需要调用过程或函数的文件中插入HTML语句:<!--#Inlcude file= "filename "-->。利用Include语句不但可以插入函数到别的文件中,还可以把一个文件插入到另一个文件中。例如,6-8.asp可以改写为如下两个asp文件。

---------------------------清单6-9 6-9.asp--------------------------

<%

Function myReplace(myString)'

myString=Replace(myString,"&","&amp;")'替换&为字符实体&amp;

myString=Replace(myString,"<","&lt;")  '替换<为字符实体&lt;

myString=Replace(myString,">","&gt;")  '替换>为字符实体&gt;

myString=Replace(myString,chr(13),"<br>")'替换回车符为换行标记<br>

myString=Replace(myString,chr(32),"&nbsp;")'替换空格符为字符实体

&nbsp;

myString=Replace(myString,chr(9)," &nbsp;&nbsp;&nbsp;&nbsp;")

'替换Tab缩进符为四个空格

myString=Replace(myString,chr(39),"&acute;")'替换单引号为字符实体

&acute;

myString=Replace(myString,chr(34),"&quot;")'替换双引号为字符实体

&quot;

myReplace=myString            '返回函数值

End Function

%>

---------------------------清单6-10 6-10.asp------------------------

<!--#Include file="6-9.asp"-->

<HTML>

<HEAD>

<TITLE> 函数的定义和调用 </TITLE>

</HEAD>

<BODY>

<%

Dim str

str="<font color=red>abc</font>"

Response.write str   '得到的是一个红色的“abc”

Response.write"<br>"

Response.write myReplace(str)'替换为字符实体,得到正确的结果

%>

</BODY>

</HTML>

--------------------------------------------------------------------

在这里,6-9.asp和6-10.asp放置在同一个文件夹下面。若这两个文件不是在同一个文件夹下面时,Include语句中"6-9.asp "前面还需要加上6-9.asp的相对路径名。

可以利用这种方法将常用的一些函数和过程都放在同一个文件中,然后在其他文件中包含该函数文件即可,这样函数和过程可以一次定义,却能在多个文件中反复调用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈