js中的for循环相关问题? 财富值46

2016-10-25 01:20发布

<!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" xml:lang="en"> <head>     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">     <title>Document</title> </head> <body>     <div id="test">         <span>0</span>         <span>1</span>         <span>2</span>         <span>3</span>     </div> </body> </html> <script type="text/javascript">     window.addEventListener("load",init,false);     function init(){         spans=$("test").getElementsByTagName("span");         for(var i=0;i<spans.length;i++)         {             spans[i].onclick=function(){                 alert(i);             }         }     }     function $(id){         return document.getElementById(id);     } </script>

为什么单击0 1 2 3弹出的警告框都是4?

2条回答
aaaaaaa吆 - 这个人很懒,什么都没留下
1楼 · 2016-10-25 02:12.采纳回答

点击事件上的i是循环完的i也就是4,如果要拿到0123可以写个闭包函数

所有span的点击事件绑定的其实是同一个函数对象,因此显示的也是最后的i值

一周热门 更多>