学习jquery 中遇到的小问题(有关图片预加载) 5

先上代码:<html><head><scripttype="text/javascript"src="../../jquery-1.10.2.js"></script><... 先上代码:
<html>
<head>
<script type="text/javascript" src="../../jquery-1.10.2.js"></script>
<script type="text/javascript">

$(function(){

var imgs = [
"http://farm3.static.flickr.com/2661/3792282714_90584b41d5_b.jpg",
"http://farm2.static.flickr.com/1266/1402810863_d41f360b2e_o.jpg"
];

var str = "";

for(var i=0;i<imgs.length;i++){
str = $("<img style='width:200px; height:200px;'/>");
str = str.attr("src", imgs[i]);
str.load(function(){

alert("img"+i+ " success!");
$("body").append(str);

});
}
});
</script>
</head>

<body>

</body>
</html>

大概意思是的,有两张远程图片,先预加载到系统当期加载完毕后输出 先输出“img0 success”并append到body上去,再输出img1并且append到body上去, 但是事与愿违, 结果却是两次都输出 “img2 success” 并且只有2张图片加载到了页面上,打上断点就完全正常了,不打断点就会出现这样的错误,求求哪位大大救救我!!!
展开
 我来答
脆皮浮尘
2013-09-17 · 超过18用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:36.4万
展开全部

由于i++的执行比str.load()要早,所以第二次执行的时候str已经被覆盖,直接使用$("body").append(str);所加载的只有第二张图。

代码需要改成

<html>
    <head>
        <script type="text/javascript" src="../../jquery-1.10.2.js"></script>
        <script type="text/javascript">
            $(function(){
                var imgs = [
                "http://farm3.static.flickr.com/2661/3792282714_90584b41d5_b.jpg",
                "http://farm2.static.flickr.com/1266/1402810863_d41f360b2e_o.jpg"
                ];
                for(var i = 0; i < imgs.length; i++){
                    var str = $("<img style='width:200px; height:200px;'/>");
                    str.attr("src", imgs[i]);
                    str.attr("nowIndex", i);
                    str.load(function(){
                        var nowNode = $(this);
                        alert("img"+nowNode.attr("nowIndex")+ " success!");
                        $("body").append(nowNode);
                    });
                }
            });
        </script>
    </head>
    <body>
    </body>
</html>

如果需要记录当前i的值,只能记录在标签里面的自定义属性里了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
airongbaoaixia
2013-09-17 · TA获得超过174个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:109万
展开全部

你好,很高兴为你解答:

for(var i=0;i<imgs.length;i++){
    str = $("<img style='width:200px; height:200px;'/>");
    str = str.attr("src", imgs[i]);
    str = str.attr("index", i);
    //i的正确传值,index随意起名代表索引 
    //load函数内部获值方法,$(this).attr("index");
    str.load(function(){
         alert("img"+$(this).attr("index")+ " success!");
         $("body").append(str);
    });

}

//没有明白你所谓 “只有2张图片加载到了页面上,打上断点就完全正常了”,我看见var imgs = [只有两张图的路径];
 
//如有疑问继续追问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式