2026, 새로운 도약을 시작합니다.

이미지 없을때 처리 방법 질문해요 채택완료

A

B

C

 세 이미지가 있는데

A 이미지가 경로상에 있으면

B로 대체, B이미지도 없다면

C 이미지로 대체 하려고 하는데 

어떻게 해야할까요...

<img src="A" onerror="this.src=B';"/>

로하면 A에서 B로는 되는데 B가 없다면 C로 가야하는데 방법을 모르겠어요

답변 5개

채택된 답변
+20 포인트
Copy




function img_src_alternatives(img) {

    if (img.onerror == null) {

        img.onerror = function () {

            let src_candidates = this.dataset.srcCandidates.split(',');

            src_candidates = src_candidates.map((src) => src.trim());

            src_candidates = src_candidates.filter((src) => src.length > 0);

            if (src_candidates.length == 0) {

                this.onerror = null;

                return;

            }

 

            this.src = src_candidates.shift();

            this.dataset.srcCandidates = src_candidates.toString();

        }

    }

}

 

document.addEventListener('DOMContentLoaded', function () {

    document.querySelectorAll('img[data-src-candidates]').forEach((img, idx, arr) => {

        img_src_alternatives(img);

    });

});



 



 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

Copy






img_1.onerror = () => {

    img_1.id = "img_2";

    img_2.src = "B";

    img_2.onerror = () => {

        img_2.src = "C";

    }

}



그런데 온에러 이벤트는 F12 에서 빨간색이 들어와서

php 에서 file_exists() 등으로 파일존재유무를 파악하는 것이 좋습니다.

자바스크립트에서 이미지파일이 존재하는지 확인하려면 아작스로 이미지url 자체를 땡겨서 404 오류메시지를 뿜어내면 그 이미지가 없는 것으로 판단하는 꼼수도 있긴 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

php file_exists 함수를 찾아보시고

파일유무에 따라서 if문으로 처리하면될듯합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

Copy

이런식으로 $img1 $img2 $img3 를 미리 변수에 담아놓고 처리할수도 있어요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

Copy






function replaceImage(img) {

  if (img.src.endsWith("A")) {

    img.src = "B";

  } else if (img.src.endsWith("B")) {

    img.src = "C";

  }

}

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고