1

我试图显示图像或静态地图图像取决于图像的存在。我想将我的图像路径传递给 java 脚本函数,因为路径在我的程序中是动态的。因此,如果图像在给定路径中不存在,则显示静态谷歌地图图像。
我正在使用该代码来执行此操作,但似乎无法正常工作。你能帮助我吗?

      function initialize() {
        var img = document.getElementById("super");
        var mdata = $('#image_div');
        var mpath = mdata .data('path');
        img.src =mpath ;

        img.onerror = function( ) {
        document.getElementById("super").style.display = "block";
        alert("failed to load");
    }
    img.onload = function( ) {
        alert("do nothing");
    };
}

这是小提琴: http: //jsfiddle.net/H2gwu/2/ http://jsfiddle.net/H2gwu/3/

4

2 回答 2

2

固定小提琴:http: //jsfiddle.net/HCC6V/

我修复了一些错误:

  • mdata 后面的空格
  • 你打开了一个你从未关闭过的功能块
  • 您过早地声明了 src:如果图像在缓存中,您可能会错过加载事件
  • noneCSS中的坏引号
  • 如果找不到图像,则不调用显示地图

固定 JS:

var img = document.getElementById("super");
var mdata = $('#image_div');
var mpath = mdata.data('path');
img.onload = function( ) {
    alert("do nothing");
}
img.onerror = function( ) {
    document.getElementById("super").style.display = "block";
    alert("failed to load");
    $('#google_map').show();
}
img.src =mpath ;

在 CSS 中:

display: none;

代替

display: "none";
于 2012-12-01T18:25:50.113 回答
0

对于可能存在的图像,我发现最优雅的解决方案是使用 $ajax,例如:

$.ajax({
    url: 'your_image.jpg',
    type: "POST",
    dataType: "image",
    success: function() {
        /* function if image exists (setting it in div or smthg.)*/
    },
    error: function(){
       /* function if image doesn't exist like hideing div or setting default image*/
    } 

});

于 2013-07-29T19:10:19.370 回答