ASP GetRef 函数指针试探
来源:asp之家 发布时间:2011-03-16 11:09:00
GetRef 函数
返回一个指向一过程的引用,此过程可绑定某事件。
Set object.eventname = GetRef(procname)
参数
object
必选项。事件所关联的对象的名称。
eventname
必选项。要与函数绑定的事件的名称。
procname
必选项。该字符串中包含 Sub 或 Function 过程的名称,该过程与事件关联。
说明
GetRef 函数可以用来将 VBScript 过程 (Function 或 Sub) 与 DHTML (动态 HTML)页面中可用的任何事件联系在一起。DHTML 对象模型为不同对象提供了与各种可用事件有关的信息。
在其他脚本和程序设计语言中,GetRef 所提供的功能被称为函数指针,即它指向了在指定事件发生时要执行的过程的地址。
下面的例子说明了 GetRef 函数的使用:
代码如下:
<SCRIPT LANGUAGE="VBScript">
Function GetRefTest()
Dim Splash
Splash = "GetRefTest Version 1.0" & vbCrLf
Splash = Splash & Chr(169) & " YourCompany 1999 "
MsgBox Splash
End Function
Set Window.Onload = GetRef("GetRefTest")
</SCRIPT>
大概意思是为绑定事件所用,因为本人对ASP中事件了解不多,所以在这里对GetRef和事件的关系也不做过多的讨论。这里只研究下WEB开发应用中GetRef的用处。
在PHP里面,PHP不支持指针,因此无法使用函数指针这一技术。PHP支持所谓的“函数变量”,可以把函数赋予某个变量,其作用类似于函数指针。
简单点的例子:
PHP里面可以这么做
代码如下:
<?php
$funcname = "cutstr";
echo $funcname();
function cutstr() {
return "function";
}
?>
有了GetRef,类似上面的功能ASP也可以实现:
<%
dim funcname
funcname = "cutstr"
response.Write(getref(funcname))
function cutstr()
cutstr = "function"
end function
%>
实际应用:
在做后台管理的项目时,比如新闻添加,删除,修改,等操作在同一个页面处理,一般我们会在form里面插入一个隐藏域action,或者url参数action,根据action的值来判断操作哪一步。通常这么写:
select case request.querystring("action")
case "add" : '要操作的代码段....
case "modify" : '要操作的代码段....
end select 或者使用if else
使用“函数变量”可以使代码更加简洁、清晰,附上一个完整的例子,该例是后台中常用的一种操作。修改、删除、添加。
可以使用?action=×××来测试结果
代码如下:
<%
option explicit
dim array_action
'合法的模块名
array_action = array("list","add","add_form","modify","modify_form","del")
'输出
response.write(getref(action))
'检验参数是否合法
function action()
dim str : str = request.querystring("action")
action = array_action(0)
if arr_in(array_action,str) then action = str
end function
'操作部分----------------------
function list()
list = "显示列表信息"
end function
function add()
add = "执行添加操作"
end function
function add_form()
add_form = "显示添加表单"
end function
function modify()
modify = "执行修改操作"
end function
'------------------------------
'检测是否存在于数组
function arr_in(a,v)
arr_in = false
dim i
if isarray(a) then
for each i in a
if i = v then : arr_in = true : exit for : end if
next
end if
end function
%>
很多帖讨论ASP、PHP、.NET,到底哪个强,个人认为不是语言的问题,而是思想的问题,网站功能原理了解了,用什么语言写都一样,效率高不高、代码是否简洁明了,那就看自己的水平了。欢迎大家讨论!
猜你喜欢
- 最近笔者学会了用FrontPage XP做网页,心理特高兴,非常想把我在制作主页过程中的一些经验和大家交流交流、切磋切磋,我们一起来看看吧。
- 最近对动易CMS有个研究任务,具体研究什么,嘿嘿,保密。网络收集了九个常见的错误原因分析及解决方法错误提示: ADODB.Recordset
- 这个是今年年初写的一篇,拿出来温习下。指针让程序结构变得混乱,也让程序执行效率提高,因此在oo的语言中不提倡指针的使用,使得程序结构清晰易读
- 1 , javascript字符集:javascript采用的是Unicode字符集编码。为什么要采用这个编码呢?原因很简单,16位的Uni
- 代码如下:ADODB.Connection 错误 '800a0e7a' 未找到提供程序。该程序可能未正确安装。 /连接“网站
- 在用户研究工作中,如何让自己的数据和结论更有说服力,是很重要的问题。最近将自己积累的用研信度和效度的笔记整理一下,罗列在文中,希望对大家有所
- MySQL字符集出错的解决方法:错误案例: Illegal mix of collations (gbk_chinese_ci,I
- 迭代器模式迭代器模式(Iterator Pattern)是一种常用的设计模式,用于遍历集合中的元素,不暴露集合的内部结构。迭代器模式将集合和
- 下午在写程序的时候,碰到个变量重定义的问题,具体是在一个函数中的两个地方定义了相同的变量,两个变量分别放在IF语句的两部分中,本来以为这两次
- 举例如下:<HTML> <HEAD>  
- 在asp中获取当前的地址栏网址很简单,使用下面这句语句即能实现获取网站域名Request.ServerVariables("HTT
- 下面是滚动条css代码参数介绍:scrollbar-3d-light-color 设置或检索滚动条亮边框颜色 scrollbar-highl
- 以下为在asp中增加一个sql server2000用户函数,并为建立一个数据库,给他dbo的权限。注意:sql server的验证方式不要
- 这篇文章所说的视觉元素是指:在一个网站中除去内容(文本、图片、视频、音频等)之外的一些元素。比如图标,背景色,以及背景图案。视觉元素的设计是
- 一、介绍这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。虽然这
- SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL。其中用于定义数据的结构,比如 创建
- 大家在用asp开发程序的时候,有时候会碰到以下的错误提示:Active Server Pages 错误 'ASP 0141'
- ORA-01578:Oracle data block corrupted(file # num,block # num)产生原
- ajax.html <html><head> <met
- Update 语句Update 语句用于修改表中的数据。语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值P