Se l'immagine non esiste come ne uso un'altra? Utilizzando ('#id'). Attr ("src"

Aug 18 2020

Sono un programmatore C che cerca di correggere un bug in un codice che non ho creato. Quando si fa clic su una riga di una tabella, l'immagine viene impostata con ID "quadrato"

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

Tuttavia, alcune immagini sono denominate _3_1.jpg (non sotto il mio controllo) quindi vorrei controllare se l'immagine _2_ esiste e, in caso contrario, caricare una variante _3_.

L'uso di "onerror" non sembra funzionare e l'inserimento di un'istruzione IF interrompe il caricamento dell'intera tabella.

Questa è l'intera funzione:

$('#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]);
        }
    }
});

Modifica: grazie per i suggerimenti! Tutti i dati sono locali, quindi per quanto ne so non è necessario connettersi ai server e utilizzare richieste HTTP. Proverò gli altri suggerimenti domani. Il PC a cui devo accedere da remoto è 6 ore avanti rispetto a me e si spengono per la giornata.

Risposte

Rik Aug 19 2020 at 14:55

Attraverso un po 'di debug e prove ed errori sono stato in grado di adattare Controlla se l'immagine esiste prima di caricarla su ciò di cui avevo bisogno.

Ringrazia tutti!

Per i posteri ho usato:

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";
}