img 태그의 src를 프로그래밍 방식으로 변경


242

javascript를 사용하여 태그 의 src속성을 어떻게 변경 img합니까?

<img src="../template/edit.png" name=edit-save/>

처음에는 기본 src 인 "../template/edit.png"를 가지고 있으며 "../template/save.png"onclick로 변경하고 싶었습니다.

업데이트 : 여기 내 HTML onclick이 있습니다.

<a href='#' onclick='edit()'><img src="../template/edit.png" id="edit-save"/></a>

내 JS

function edit()
{   
    var inputs = document.myform;
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }
}

나는 이것을 edit () 안에 삽입하려고 시도했지만 작동하지만 이미지를 두 번 클릭해야합니다.

var edit_save = document.getElementById("edit-save");
    edit_save.onclick = function(){
       this.src = "../template/save.png";
    }

답변:


307

img 태그에 ID를 부여하면

document.getElementById("imageid").src="../template/save.png";

16
입력 값 설정 또는 이미지 src 변경 ( 특히 ID가있는 요소를 사용하는 경우) 과 같은 간단한 작업의 경우 호출이 순수 JS 호출보다 너무 느리므로 jQuery를 피해야합니다.
Brian Leishman

2
@ william44isme 및 페이지가 이전보다 느리게로드됩니다. jQuery는 동일한 코드를 사용하는 웹 사이트에만 유용하다고 생각합니다. 예를 들어 위의 코드를 30 회 또는 50 회 이상 사용하는 경우. 그래서 jQuery를 사용하는 것이 필요
마흐디 Jazini

62

jquery와 javascript 메소드를 모두 사용할 수 있습니다. 예를 들어 두 개의 이미지가있는 경우 :

<img class="image1" src="image1.jpg" alt="image">
<img class="image2" src="image2.jpg" alt="image">

1) 쿼리 방법->

$(".image2").attr("src","image1.jpg");

2) 자바 스크립트 방법->

var image = document.getElementsByClassName("image2");
image.src = "image1.jpg"

이 유형의 문제에서 jquery는 사용하기가 쉽습니다.


21
포스터는 jQuery 솔루션에 관심을 보이지 않았다. jQuery 메소드도 단순하지 않습니다. jQuery 솔루션으로 JS 질문에 대답하지 마십시오 (게시물에서 원하는 것을 나타내지 않는 한). JS를 배우려는 사람들을 혼란스럽게합니다.
metaColin

6
getElementByClassName은 모든 요소의 콜렉션을 리턴합니다. 요소의 인덱스도 언급해야합니다. var image = document.getElementsByClassName ( "image2") [0]; image.src = "image1.jpg"
Tushar Gaurav

34

JQuery 라이브러리를 사용하는 경우 다음 지시 사항을 사용하십시오.

$("#imageID").attr('src', 'srcImage.jpg');

24
이 질문은 jQuery 답변을 요구하지 않거나, jQuery 태그를 포함 시키거나, jQuery를 사용해도된다고 제안합니다.
Popnoodles

10
Javascript에 동등한 기능이 내장되어있을 때 jQuery를 사용하도록 지시하는 것은 말이되지 않습니다. 모든 JS 질문에는 jQuery 답변이 필요하지 않습니다. 이 솔루션은 사람들이 바닐라 JS가 이미 할 수있는 것에 대해 배우지 못하게하는 방해물입니다.
metaColin

27

지금은 괜찮아요

function edit()
{   
    var inputs = document.myform;
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }

    var edit_save = document.getElementById("edit-save");

       edit_save.src = "../template/save.png";                              
}


7

이 경우 src요소의 첫 번째 값 을 변경 하기 위해 함수를 작성할 필요가 없습니다. 요소에서 바로 변경할 수 있습니다.

<a href='#' onclick='this.firstChild.src="../template/save.png"')'>
  <img src="../template/edit.png" id="edit-save"/>
</a>

여러 가지 방법이 있습니다. 프로세스를 자동화하는 함수를 작성할 수도 있습니다.

function changeSrc(p, t) { /* where p: Parent, t: ToSource */
  p.firstChild.src = t
}

그럼 당신은 할 수 있습니다 :

<a href='#' onclick='changeSrc(this, "../template/save.png");'>
  <img src="../template/edit.png" id="edit-save"/>
</a>

6

제공 한 스 니펫을 사용하여 (요소의 부모에 대한 가정을하지 않고) 이미지를 참조 할 수 있습니다

document.querySelector('img[name="edit-save"]');

src를 다음과 같이 변경하십시오.

document.querySelector('img[name="edit-save"]').src = "..."

따라서 원하는 효과를 얻을 수 있습니다

var img = document.querySelector('img[name="edit-save"]');
img.onclick = function() {
    this.src = "..." // this is the reference to the image itself
};

그렇지 않으면 다른 제안 된 것처럼 코드를 제어 id하는 경우 이미지에 참조 를 지정하는 것이 좋습니다 getElementById(요소를 검색하는 가장 빠른 방법이므로).


6

이미지에 ID를 부여하십시오. 그런 다음 자바 스크립트 에서이 작업을 수행 할 수 있습니다.

document.getElementById("blaah").src="blaah";

".___"메소드를 사용하여 요소의 속성 값을 변경할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.