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

  作者:bea

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript">
    var theP;  //P标签对象   
    var show=function(msg){    //直接定义 function show(msg) 效果是一样的
        return function(){   
            alert(msg+" from show()");
            if(window.addEventListener){  //FF etc.
                 theP.removeEventListener("click", theP.show11, false);
            }
            else{ //IE
                 theP.detachEvent("onclick", theP.show11);
            }
        }
    }
    var show2=function(msg){    //直接定义 function show2(msg) 效果是一样的
        return function(){   
            alert(msg+" from show2()");
        }
    }
   
    function showDef(){
        alert("showDef()");           
       
         if(window.addEventListener){  //FF etc.
              theP.removeEventListener("click", showDef, false);
         }
         else{ //IE
              theP.detachEvent("onclick", showDef);
         }
    }
   
    window.onload=function(){
        theP=document.getElementById("pid");
       
        theP.show11=show("可以detach的带参数方法");
       
        if(window.addEventListener) // not IE
        {
            //for FF.etc
            theP.addEventListener("click", theP.show11, false);
            theP.addEventListener("click", showDef, false);
        }
        else
        {
            //for IE           
            theP.attachEvent("onclick", theP.show11);
            theP.attachEvent("onclick", show2('不能detach的带参数方法'));//区别于上一个,这里不能detach
           
            theP.attachEvent("onclick", showDef);  //无参数的方法直接写
        }       
    }
</script>
</head>
<body >
<div >
    <p id="pid">Click Me</p>
</div>
</body>
</html>




[Ctrl+A 全选 注:
如需引入外部Js需刷新才能执行]



有用  |  无用

猜你喜欢