Если изображение не существует, как мне использовать другое? Использование ('#id'). Attr («src»

Aug 18 2020

Я программист на C, пытаюсь исправить ошибку в коде, который я не создавал. При щелчке по строке таблицы устанавливается изображение с идентификатором "квадрат".

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

Однако некоторые изображения называются _3_1.jpg (не под моим контролем), поэтому я хотел бы проверить, существует ли изображение _2_, а если нет, загрузить вариант _3_.

Использование «onerror» не работает, а вставка оператора IF останавливает загрузку всей таблицы.

Это вся функция:

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

Изменить: спасибо за предложения! Все данные локальные, поэтому, насколько мне известно, нет необходимости подключаться к серверам и использовать HTTP-запросы. Я попробую завтра другие предложения. ПК, к которому я должен получить удаленный доступ, опережает меня на 6 часов, и они просто выключаются на день.

Ответы

Rik Aug 19 2020 at 14:55

Путем некоторой отладки и проб и ошибок я смог адаптировать Проверять, существует ли изображение перед загрузкой до того, что мне было нужно.

Спасибо всем!

Для потомков я использовал:

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