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 >Click Me</p>

67</div>

68</body>

69</html>