JavaScript通过attachEvent和detachEvent方法处理带参数的函数
无标题文档
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); //无参数的方法直接写
}
}
Click Me
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]