分享、学习、提高
2008/03/15 20:21
文章作者:Enjoy 转载请注明原文链接。
<a id="enjoy" onclick="click_action()" href="javascript:void(0);">点我</a>

要求第一次执行一个click_action函数,第二次就做其它事了。

在click_action中用document.getElementById("enjoy").onclick = 'alert("2")';,不执行,但也不会

抱错,也不知道到底改了什么。

后来试了很多次,发现只能赋个函数名给它。
function click_action(){
  document.getElementById("enjoy").onclick = click_action2;
}
function click_action2() {
  alert("第二次了!");
}

这样就OK了。但如果要给第二次的函数传递参数,就需要用到闭包。代码如下:

<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>


第一次点的时候提示“第一次”,第二次及以后点的时候就提示“第二次了!”。
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写