for(var i=0;i<=3;i++){
cat_ul[i].onmouseout=function() {
alert(i); //为什么每次i都是4 我需要得到的是0,1,2,3因为需要调用相应函数,各位有什么办法?
}

解决方案 »

  1.   


    for(var i=0;i<=3;i++){
    cat_ul[i].onmouseout=function(myi) {
    alert(myi); //为什么每次i都是4 我需要得到的是0,1,2,3因为需要调用相应函数,各位有什么办法?
    }
      

  2.   

    不好意思,忘了一句var myi=i;
      

  3.   


     //一定要这么写的话,用个闭包吧
    for(var i=0;i<=3;i++){
      cat_ul[i].onmouseout = (function(arg) {
        return function () {
          alert(arg); 
        }
      })(i);
    }
      

  4.   

    刚才写的有问题,改下            for (var i = 0; i <= 3; i++) {
                    myonmouseout(cat_ul[i], i);
                }            function myonmouseout(tag, i) {
                    tag.onmouseout = function() {
                        alert(i);
                    }
                }
      

  5.   

    这种情况必须要用闭包实现for(var i=0;i<=3;i++){
      cat_ul[i].onmouseout = (function(n) {
        return function () {
          alert(n); //n就是传进来的i
        }
      })(i);
    }