日期:2014-05-16  浏览次数:20345 次

为什么弹出一直都是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