Si la imagen no existe, ¿cómo uso otra? Usando ('#id'). Attr ("src"

Aug 18 2020

Soy un programador en C que intenta corregir un error en un código que no creé. Cuando se hace clic en una fila de una tabla, establece la imagen con id 'cuadrado'

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

Sin embargo, algunas imágenes se denominan _3_1.jpg (no están bajo mi control), así que me gustaría comprobar si la imagen _2_ existe y, de no ser así, cargar una variante _3_.

El uso de "onerror" no parece funcionar e insertar una instrucción IF detiene la carga de toda la tabla.

Esta es toda la función:

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

Editar: ¡Gracias por las sugerencias! Todos los datos son locales, por lo que no es necesario conectarse a servidores y usar solicitudes HTTP que yo sepa. Intentaré las otras sugerencias mañana. La PC a la que tengo que acceder de forma remota está 6 horas antes que yo y simplemente se apagan por el día.

Respuestas

Rik Aug 19 2020 at 14:55

A través de algunas depuraciones y pruebas y errores, pude adaptar Verifique si la imagen existe antes de cargarla a lo que necesitaba.

¡Gracias a todos!

Para la posteridad, usé:

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