Se a imagem não existe, como uso outra? Usando ('#id'). Attr (“src”

Aug 18 2020

Sou um programador C tentando consertar um bug em algum código que não criei. Quando uma linha de uma tabela é clicada, ela define a imagem com id 'quadrado'

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

No entanto, algumas imagens têm o nome _3_1.jpg (não estão sob meu controle), portanto, gostaria de verificar se a imagem _2_ existe e, caso não exista, carregue uma variante _3_.

Usar "onerror" não parece funcionar e inserir uma instrução IF interrompe o carregamento de toda a tabela.

Esta é a função completa:

$('#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: Obrigado pelas sugestões! Todos os dados são locais, portanto, não há necessidade de se conectar a servidores e usar solicitações HTTP até onde eu sei. Vou tentar as outras sugestões amanhã. O PC que tenho que acessar remotamente está 6 horas antes de mim e eles simplesmente desligaram durante o dia.

Respostas

Rik Aug 19 2020 at 14:55

Através de alguma depuração e tentativa e erro, fui capaz de adaptar Verifique se a imagem existe antes de carregar o que eu precisava.

Obrigado a todos!

Para a posteridade, usei:

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