JavaScript通过attachEvent和detachEvent方法处理带参数的函数


1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2<html xmlns="http://www.w3.org/1999/xhtml">
 3<head>
 4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5<title>无标题文档</title>
 6<script language="javascript">
 7
 8    var theP;  //P标签对象
 9   
10    var show=function(msg){    //直接定义 function show(msg) 效果是一样的
11        return function(){   
12            alert(msg+" from show()");
13
14            if(window.addEventListener){  //FF etc.
15                 theP.removeEventListener("click", theP.show11, false);
16            }
17            else{ //IE
18                 theP.detachEvent("onclick", theP.show11);
19            }
20        }
21    }
22
23    var show2=function(msg){    //直接定义 function show2(msg) 效果是一样的
24        return function(){   
25            alert(msg+" from show2()");
26        }
27    }
28   
29    function showDef(){
30        alert("showDef()");           
31       
32         if(window.addEventListener){  //FF etc.
33              theP.removeEventListener("click", showDef, false);
34         }
35         else{ //IE
36              theP.detachEvent("onclick", showDef);
37         }
38    }
39   
40    window.onload=function(){
41        theP=document.getElementById("pid");
42       
43        theP.show11=show("可以detach的带参数方法");
44       
45        if(window.addEventListener) // not IE
46        {
47            //for FF.etc
48            theP.addEventListener("click", theP.show11, false);
49            theP.addEventListener("click", showDef, false);
50        }
51        else
52        {
53            //for IE           
54            theP.attachEvent("onclick", theP.show11);
55            theP.attachEvent("onclick", show2('不能detach的带参数方法'));//区别于上一个,这里不能detach
56           
57            theP.attachEvent("onclick", showDef);  //无参数的方法直接写
58        }       
59    }
60</script>
61
62</head>
63
64<body >
65<div >
66    <p id="pid">Click Me</p>
67</div>
68</body>
69</html>



相关阅读:
存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
PHP教程:一些相关常用PHP实例
asp.net 读取并显示excel数据的实现代码
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
JSP在Linux下的安装
从gb到utf-8" target="_blank">从gb到utf-8
Ajax应用研究-注册应用
event.srcElement 用法笔记e.target
和php有关的几种常见安全详细解析
定位后无法选择容器内容解决方案
Ubuntu Linux系统下设置shorewall防火墙
Javascript 同时提交多个Web表单的方法
NBear V3.3.6使用感受
ASP.NET 2.0中多页面表单的使用
快速导航

Copyright © 2016 phpStudy |