자바 스크립트 세트 img src


96

나는 아마도 간단한 것을 놓치고 있지만 당신이 읽은 모든 것이 작동하지 않을 때 꽤 짜증납니다. 동적으로 생성 된 페이지 과정에서 여러 번 복제 될 수있는 이미지가 있습니다. 그래서 분명한 것은 그것을 미리로드하고 항상 그 하나의 변수를 소스로 사용하는 것입니다.

var searchPic;
function LoadImages() {
    searchPic = new Image(100,100);
    searchPic.src = "XXXX/YYYY/search.png";
    // This is correct and the path is correct
}

그런 다음 사용하여 이미지를 설정합니다.

  document["pic1"].src = searchPic;

또는

  $("#pic1").attr("src", searchPic);

내가 얻을 이미지를 조회 할 때, 이미지가 방화범 제대로 설정되지 않습니다 [object HTMLImageElement]는 AS src이미지

IE에서는 다음을 얻습니다.

http://localhost:8080/work/Sandbox/jpmetrix/[object]

답변:


96

다음을 사용하여 src를 설정해야합니다.

document["pic1"].src = searchPic.src;

또는

$("#pic1").attr("src", searchPic.src);

58

순수 자바 스크립트를 사용하여 img태그를 만들고 add attributes수동으로,

var image = document.createElement("img");
var imageParent = document.getElementById("body");
image.id = "id";
image.className = "class";
image.src = searchPic.src;            // image.src = "IMAGE URL/PATH"
imageParent.appendChild(image);

src 설정 pic1

document["#pic1"].src = searchPic.src;

또는 getElementById

document.getElementById("pic1").src= searchPic.src;

이것을 보관하는 j-Query,

$("#pic1").attr("src", searchPic.src);

6
document.getElementById를 ( "PIC1") #없이
지안루카 Demarinis

6

이미지 생성자의 인스턴스는 어디에서나 사용할 수 없습니다. 을 설정하기 만하면 src이미지가 미리로드됩니다. 그게 전부입니다. 쇼는 끝났습니다. 개체를 버리고 계속 진행할 수 있습니다.

document["pic1"].src = "XXXX/YYYY/search.png"; 

당신이해야 할 일입니다. 당신은 여전히 이미지 생성자를 사용하고있는 두 번째 작업을 수행 할 수 있습니다 onload당신의 핸들러 searchPic. 이렇게하면 src실제 img개체 에 를 설정하기 전에 이미지가로드 됩니다.

이렇게 :

function LoadImages() {
    searchPic = new Image();
    searchPic.onload=function () {
        document["pic1"].src = "XXXX/YYYY/search.png";
    }
    searchPic.src = "XXXX/YYYY/search.png"; // This is correct and the path is correct
}

onload ()에서 src를 설정하면 서버를 망치는 무한 루프가 발생합니다. 즉, src가로드되면 onload를 호출합니다.
David Newcomb 2013 년

로드 이벤트가 한 번만 발생할 수 있기 때문에 다른 문제가 있습니다. 소스를 동일한 이미지로 설정하여 다시 실행할 수 없습니다.
Breton

1
맞습니다. "XXXX / YYYY / search.png"가 웹캠 사진이거나 서버 측에서 변경되는 항목 일 때 이상한 캐싱 문제에 대해 이야기하는 다른 SO 기사가 있습니다. 링크를 "XXXX / YYYY / search.png? t = <thedate>"로 변경할 것을 제안했습니다. 귀하의 솔루션이 가장 훌륭하고 깨끗했기 때문에 두 가지를 결합하여 서버를 망치 었습니다.
David Newcomb 2013

트윗 담아 가기 그것은 까다로운 것입니다. 이 경우 새로운 Image () 부분을 버리고 대신 이중 버퍼와 같은 두 개의 실제 돔 이미지를 가질 것이라고 생각합니다. 이미지 1 숨기기, 이미지 2 숨기기 간격 타이머에서 : image1에 src를 설정하고 image1.onload에서 show 1, hide 2를 설정합니다. 간격 실행 : image2에 src를 설정합니다. image2.onload, show 2, hide 1에서 대기, 간격 발생 : image1에 src를 설정합니다. image1.onload에서, 1, 숨기기 2 등 등 ... 표시
브르타뉴어

5

또한이 문제를 해결하는 한 가지 방법은 document.createElementhtml img 를 사용 하고 만들고 이와 같은 속성을 설정하는 것입니다.

var image = document.createElement("img");
var imageParent = document.getElementById("Id of HTML element to append the img");
image.id = "Id";
image.className = "class";
image.src = searchPic.src;
imageParent.appendChild(image);

비 고 : 하나의 포인트는 자바 스크립트 커뮤니티는 지금과 같은 사용 문서 선택기에 개발자를 장려한다는 것입니다 querySelector, getElementById그리고 getElementsByClassName오히려 문서보다 더 [ "PIC1"].



1

완전히 새로운 이미지를 생성 할 필요는 없습니다. src 속성은 문자열 값만받습니다. :-)


1
페이지가 자바 스크립트를 사용하여 동적으로 생성되는 경우 페이지가로드 될 때 이미지를 다운로드하여 필요한 요소를 처음 만들 때 성가신 지연이 발생하지 않도록해야합니다. 이것이 Image 객체를 생성하는 이유입니다.
tvanfosson

당신 말이 맞아요, 저는 제 대답이 정확하지 않았습니다. 나는 src 속성이 문자열을 취하고 Image미리 on 을 생성하는 캐싱 이점을 완전히 잊었다는 것을 의미했습니다 . 감사!
JorenB

0

설정해야합니다.

document["pic1"].src = searchPic.src;

searchPic 자체는 Image ()이므로 설정 한 src를 읽어야합니다.


0

src 요소를 JavaScript에서 만든 전체 이미지로 설정하기 때문에 src 속성은 객체입니다.

시험

document["pic1"].src = searchPic.src;

0

와! 사용할 때 src다음 src의는 searchPic또한 사용되어야합니다.

document["pic1"].src = searchPic.src

더 좋아 보인다


0

WinJS 를 사용 src하는 경우 Utilities기능을 통해 변경할 수 있습니다 .

WinJS.Utilities.id("pic1").setAttribute("src", searchPic.src);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.