Jika gambar tidak ada, bagaimana cara menggunakan yang lain? Menggunakan ('#id'). Attr ("src"

Aug 18 2020

Saya seorang programmer C yang mencoba memperbaiki bug di beberapa kode yang tidak saya buat. Ketika sebuah baris tabel diklik, itu mengatur gambar dengan id 'square'

$('#square').attr("src","image/"+row.id+"_2_1.jpg");

Namun, beberapa gambar diberi nama _3_1.jpg (tidak di bawah kendali saya) jadi saya ingin memeriksa apakah gambar _2_ ada dan jika tidak, muat varian _3_.

Menggunakan "onerror" tampaknya tidak berhasil dan memasukkan pernyataan IF menghentikan seluruh tabel dari pemuatan.

Ini adalah keseluruhan fungsinya:

$('#table').on('click-row.bs.table', function (e, row, $element) { if(config["homing_tool"] == "1"){ $('#detail').show();
            $('#detail1').hide(); $('#detail2').hide();
            $('.homing').hide(); }else{ $('#detail').show();
            $('#detail1').show(); $('#detail2').show();

            $('#iris').attr("src","image/"+row.id+"_0_1.jpg"); $('#square').attr("src","image/"+row.id+"_2_1.jpg");
    };
    var x;
    for (x in row) {
        if(x == "type"){
            $('#'+x).html(spec[row[x]]["name"]); }else{ $('#'+x).html(row[x]);
        }
    }
});

Edit: Terima kasih atas sarannya! Semua data bersifat lokal, jadi tidak perlu terhubung ke server dan menggunakan permintaan HTTP sejauh yang saya tahu. Saya akan mencoba saran lainnya besok. PC yang harus saya akses dari jarak jauh adalah 6 jam lebih awal dari saya dan mereka baru saja dimatikan untuk hari itu.

Jawaban

Rik Aug 19 2020 at 14:55

Melalui beberapa debugging dan trial-and-error saya bisa beradaptasi Periksa apakah gambar ada sebelum memuat ke apa yang saya butuhkan.

Terima kasih semuanya!

Untuk anak cucu, saya menggunakan:

function getSquareURL(rowid)
{
    var image = new Image();
    
    image.onload = function()
    {
        $('#square').attr("src","image/"+rowid+"_2_1.jpg"); return true; } image.onerror = function() { $('#square').attr("src","image/"+rowid+"_3_1.jpg");
        return false;
    }

    image.src = "image/"+rowid+"_2_1.jpg";
}