为什么弹出一直都是6 求解
<script language="javascript">
function Add()
{
var lil=document.getElementsByTagName("img");
var big=document.getElementById("z");
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";
alert(big.src)
}
}
}
}
</script>
<BODY onload="Add()">
<div class="zz">
<div align="center"><img id="z" src="images/show1_big.jpg" />
</div>
<ul>
<li><img src="images/show1.jpg"></li>
<li><img src="images/show2.jpg"></li>
<li><img src="images/show3.jpg"></li>
<li><img src="images/show4.jpg"></li>
<li><img src="images/show5.jpg"></li>
</ul>
</div>
------解决方案--------------------应该是
lil[i].onmouseover=function(){
(function(j) {
return function(j) {
big.src="images/"+"show"+j+"_big.jpg";
alert(big.src)
}
})(i);
}
------解决方案--------------------应该改成这样
lil[i].onmouseover=(function(j){
return function() {
big.src = "images/"+"show"+j+"_big.jpg";
alert(big.src);
}
})(i);
因为i是属于for循环这一层的变量,其在onmouseover里是属于闭包使用,所以每个onmouseover里拿到的都是i的最终值,即循环结束后的值6