直接在html里给标签的点击事件绑定函数的时候,为什么不能这么写?
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<a id="a1" href="#" onclick="(function(){alert('a1');})() ">正确</a>
<a id="a2" href="#" onclick="function(){alert('a2');}">错误</a>
<a id="a3" href="#">错误吗?</a>
</body>
</html>
<script type="text/javascript">
var a3 = document.getElementById('a3');
a3.onclick= function(){alert('a3');};
</script>
结果就是a1和a3的点击事件会正常执行,a2就会有错误。
可是a1、a2、d3的点击事件的绑定方式都是一样的使用匿名函数,而且a2和a3的匿名函数的写法也都是"function(){}",为啥a2这种写法不行呢?
哪位清楚的,给我多说说这方面的知识吧……
------解决方案--------------------a1是匿名函数立即执行 也就是你点击后生成函数后立即运行这个函数
a2只是定义函数 点击后定义了一个函数而已 没执行
a3你可以看做有个属性时onclick 他是个函数 当你点击时执行这个函数
------解决方案--------------------<!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>
<title></title>
</head>
<body>
<a id="a1" href="#" onclick="(function(){alert('a1');})() ">正确</a>
<a id="a2" href="#" onclick="window['k']=function(){alert('a2');}">错误</a>
<a id="a3" href="#">错误吗?</a>
</body>
</html>
<script type="text/javascript">
var a3 = document.getElementById('a3');
a3.onclick= function(){alert('a3');k()};
</script>
比如这样 你点a3时只会输出a3然后报错 点完a3再点a3就回输出a3和a2了
------解决方案--------------------点完a2再点a3就回输出a3和a2了
------解决方案--------------------<a id="a2" href="#" onclick="function(){alert('a2');}">错误</a>
浏览器会把 onclick 的属性值,封装到一个函数中。
相当于:
var a3 = document.getElementById('a3');
a3.onclick= function(){
function(){alert('a2');}
};
------解决方案--------------------1楼正解~~。
------解决方案--------------------
正解
------解决方案--------------------在使用htm