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的闭包啊
什么情况下使用闭包啊 为什么要用闭包
------解决方案--------------------
因为 onmouseover里面的代码 其实不会立即执行的 ,
在执行的时候 i是一个全局的变量,那么结果就是i已经被循环赋值为6了,所以一直都是6。。。
------解决方案--------------------
涉及到作用域
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)
}
------解决方案--------------------
同意1楼的。关于闭包百度JS闭包一堆文章解释。http://www.cnblogs.com/mzwr1982/archive/2012/05/20/2509295.html这里有你问题的解释!
------解决方案--------------------
http://kb.cnblogs.com/page/110782/