0

我正在使用 javascript 输出图像,在 FF 和 Chrome 中一切正常,但在 IE 中,只有在您第一次加载页面时才会附加第一张图像,只有在刷新页面后才会附加所有图像。

用于输出图像的 Javascript:

  $.getJSON("php/v.php?"+Math.random(),function(data){              
                $.each(data,function(l){
                        if(data[l]['s']==1){                
                             $("#img"+(l+1)).append("<img src='"+data[l]['img']+"' />");
                        }                   
                    });
        });

来自 v.php 的 IE9 开发工具响应:

[{"img":"https:\/\/www.example.com\/example.jpg","s":"1"},{"img":"https:\/\/www.example.com\/example.jpg","s":"1"},{"img":"https:\/\/www.example.com\/example.jpg","s":"1"}]

所以问题应该是由每个元素而不是getJSON引起的。在stackoverflow上发现了许多类似的问题,但没有类似的问题(http://stackoverflow.com/questions/7785138/each-method-only-applies-to-first-element-in-ie,http://stackoverflow.com/questions /4664190/javascript-each-loop-over-json-only-getting-first-element) 但在我的情况下,问题也出现在 IE9 中。

4

2 回答 2

0

您的 JSON 中有语法错误。第二个 URL 有两个结束的 " 引号

于 2012-11-27T10:22:14.380 回答
0

我认为您可以首先在本地浏览器中进行调试,如下所示:

var data= [{},{},{}];//your data

$.each(data,function(l){
    if(data[l]['s']==1){                
        $("#img"+(l+1)).append("<img src='"+data[l]['img']+"' />");
    }                   
});

//and this way
for(var i=0,l=data.length; i<l; i++){
    if(data[l]['s']==1){                
        $("#img"+(l+1)).append("<img src='"+data[l]['img']+"' />");
    } 
}

//and the third way
for(var i=0,l=data.length; i<l; i++){
    if(data[l]['s']==1){
        var img = new Image();
        img.onload = function(){
            var id = '#img'+(l+1);
            $(id).append(this);
        }
        img.src = data[l]['img'];
    } 
}
于 2012-11-27T10:32:41.923 回答