หากไม่มีรูปภาพฉันจะใช้ภาพอื่นได้อย่างไร? การใช้ ('#id'). attr (“ src”

Aug 18 2020

ฉันเป็นโปรแกรมเมอร์ C ที่พยายามแก้ไขข้อบกพร่องในบางโค้ดที่ฉันไม่ได้สร้างขึ้น เมื่อมีการคลิกแถวของตารางมันจะตั้งค่ารูปภาพด้วย id 'square'

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