本帖最后由 Henry_YQH 于 2013-07-25 15:12:24 编辑

解决方案 »

  1.   

    for(var x = 2 ;x<11;x++){
              (function(x){
                  $("#img"+x).mouseover(function(){
                        $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
                  });
                    $("#img"+x).mouseleave(function(){
                        $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
                    });
              })(i);
          }  
      

  2.   

    我就是这样写:
    for(var x = 2 ;x<11;x++){
              (function(){
                  $("#img"+x).mouseover(function(){
                        $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
                  });
                    $("#img"+x).mouseleave(function(){
                        $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
                    });
              })();
          }  ()里面不用加i也能执行。这是什么情况呢?
      

  3.   

    for(var x = 2 ;x<11;x++){
              (function(){
                  $("#img"+x).mouseover(function(){
                        $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
                  });
                    $("#img"+x).mouseleave(function(){
                        $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
                    });
              })();
          }  和for(var x = 2 ;x<11;x++){              $("#img"+x).mouseover(function(){
                        $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
                  });
                    $("#img"+x).mouseleave(function(){
                        $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
                    });
             
          }  一样,执行的光#img12
      

  4.   


    循环中定义的变量var x  和“#img”+x   这俩个? 
      

  5.   

    我就是这样写:
    for(var x = 2 ;x<11;x++){
              (function(){
                  $("#img"+x).mouseover(function(){
                        $("#img"+x).attr("src", "/LogService/images/hover_"+(x-1)+".jpg"); 
                  });
                    $("#img"+x).mouseleave(function(){
                        $("#img"+x).attr("src", "/LogService/images/"+(x-1)+".jpg"); 
                    });
              })();
          }  ()里面不用加i也能执行。这是什么情况呢?

    楼上正解~
    因为你立即把匿名函数给调用了,等于直接运行了里面的函数,
    比如说function a(){......}
    然后你调用这个函数的时候,是a();这么写的,
    function a(){
    ......
    }();就等于是马上给调用了。
    我也是初学js,可能说法上也有点问题吧,不过我是这么理解的
      

  6.   

    for(var i = 0 ;i<2;i++){
          (function(){ setTimeout(function(){alert(i)}) })();    
          }for(var i = 0 ;i<2;i++){
          (function(i){ setTimeout(function(){alert(i)}) })(i);    
          }你分别运行看看区别