您的位置:首页 > Web前端 > JavaScript

用javascript改变onclick调用的函数

2008-06-11 08:59 281 查看
正需要做这个功能,发现不是自己想象中的那样.在网上找了一些资料,终于找到了解决办法.
首先列出一些错误的方法吧.(这里设obj代表你所要引用的对象.obj = document.getElementById("........");)
1.obj.onclick="f_aa()";
2.obj.onclick=f_aa();
3.if(window.attachEvent()){
obj.attachEvent("onclick",f_aa());//或obj.attachEvent("onclick",function(){f_aa();});
}else{
obj.addEventListener("click",function(){.........},false);
}
4.一种网上叫闭包的方法,但觉得也不管用.
但如果要给第二次的函数传递参数,就需要用到闭包。代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type="text/javascript">
function click_action(){
alert('第一次');
var click_action2 = alertMsg("第二次了!");
document.getElementById("enjoy").onclick = click_action2 ; //不可以.
}

function alertMsg(t) {
return function(){
alert(t);
}
}
</script>
</head>
<body>
<a id="enjoy" onclick="click_action()" href="javascript:void(0);">点我</a>
</body>
</html>

我试验成功的方法是:
1.假如所调用的函数没有参数
obj.onclick=f_aa; //f_aa为一函数名,这里没有左右小括号!
2.所调用的函数有参数
obj.onclick=new Function("f_aa("+i+")");

另外,把onclick事件置空为(即禁用onclick)
obj.onclick=null;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: