for(var i=0;i<lil.length;i++)
 {
 if(lil[i].id=="z")
 {
 continue;
 }else
 {
 lil[i].onmouseover=function()
 {
 big.src="images/"+"show"+i+"_big.jpg"; 为什么一直都是六 他应该能访问到i才对啊 
 alert(big.src)
 }
 }
谁能帮我讲解下javascript的闭包啊 什么情况下使用闭包啊  为什么要用闭包

解决方案 »

  1.   

    因为 onmouseover里面的代码 其实不会立即执行的 ,
    在执行的时候 i是一个全局的变量,那么结果就是i已经被循环赋值为6了,所以一直都是6
      

  2.   

    涉及到作用域for(var i=0;i<lil.length;i++)
    {
    if(lil[i].id=="z")
    {
    continue;
    }else
    {
    lil[i].onmouseover=(function(i)
    {return function(){
    big.src="images/"+"show"+i+"_big.jpg";  
    alert(big.src);
    };
    })(i)
    }
      

  3.   

    同意1楼的。关于闭包百度JS闭包一堆文章解释。http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html这里有你问题的解释!
      

  4.   

    http://kb.cnblogs.com/page/110782/