本帖最后由 asdyxc123 于 2013-09-17 01:19:53 编辑

解决方案 »

  1.   

    str.load(function(){     $("body").append(this);
      });
      

  2.   

       能解释一下这里为什么不能用str吗?   为什么用this?
      

  3.   

    str.load 是异步执行,str 会是最后一个值
      

  4.   

    因为str是异步,加载完后才会调用你自己定义的函数,异步加载的时候程序继续执行你的for循环,所以你这里输出2是因为,在执行完for循环的时候laod第一幅图片还没有加载完,此时i已经是2了,只有调试的时候不会出现的原因是调试的时候设置断点是运行中断,这中断的时候使得图片能够加载完,调用load函数,在继续执行循环
      

  5.   

    你这个就是闭包的概念用错啦
    给你写一段代码你觉得会输出几
    <!DOCTYPE HTML> 
    <html> 
    <head> 
    <meta charset="utf-8" /> 
    <title>闭包演示</title> 
    <style type="text/css"> 
        p {background:gold;}  
    </style> 
    <script type="text/javascript">   
    function init() {      
        var pAry = document.getElementsByTagName("p");      
        for( var i=0; i<pAry.length; i++ ) {      
             pAry[i].onclick = function() {      
             alert(i);      
        }   
      }  
    }  
    </script>   
    </head>   
    <body onload="init();">   
    <p>产品 0</p>   
    <p>产品 1</p>   
    <p>产品 2</p>   
    <p>产品 3</p>   
    <p>产品 4</p>   
    </body>   
    </html>