**********************写法1************************************8<body> <ul class="ul"> <li>chun</li> <li>xia</li> <li>qiu</li> <li>dong</li> </ul> <script> var lis = document.getElementsByTagName('li'); for(var i=0;i<lis.length;i++){ lis[i].onclick = (function(i){ return function(){ alert(i); } })(i); } </script></body>*****************************写法2*********************<body> <ul class="ul"> <li>chun</li> <li>xia</li> <li>qiu</li> <li>dong</li> </ul> <script> var lis = document.getElementsByTagName('li'); for(var i=0;i<lis.length;i++){ lis[i].onclick = function(i){ alert(i); } }</script>***********************************************************为什么写法1的参数是数字而写法2的参数为mouseEvent?
2 回答
Judy_1024
TA贡献4条经验 获得超1个赞
关于写法1:可以参考这里的回答 http://www.imooc.com/wenda/detail/326776
写法2:
事件调用的函数的第一个参数是事件对象本身;
作用域的问题,可以看看http://www.imooc.com/learn/277 第6、7章。
_潇潇暮雨
TA贡献646条经验 获得超225个赞
写法1是一个匿名立即执行函数,俗称IIFE,它接受一个外部参数i,这个参数i和for循环里面的i是一样的,所以会打印出数字,写法2中的i是事件对象event。
添加回答
举报
0/150
提交
取消