Cambie programáticamente el src de una etiqueta img


242

¿Cómo puedo cambiar el srcatributo de una imgetiqueta usando javascript?

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

al principio tengo un src predeterminado que es "../template/edit.png" y quería cambiarlo con "../template/save.png" al hacer clic.

ACTUALIZADO: aquí está mi html onclick:

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

y mi JS

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

He intentado insertar esto dentro de la edición (), funciona pero necesito hacer clic en la imagen dos veces

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

Respuestas:


307

Dele a su etiqueta img una identificación, luego puede

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

16
Para cosas simples como establecer el valor de una entrada o cambiar un src de imagen ( especialmente cuando está usando elementos que tienen ID), realmente debe intentar evitar jQuery, ya que la llamada es mucho más lenta que la llamada JS pura
Brian Leishman

2
@ william44isme y nuestra página se cargará más lentamente que antes. Creo que jQuery es útil solo para sitios web que usan un mismo código, mucho más. por ejemplo, si usamos el código anterior más de 30 o 50 veces. así que es necesario usar jQuery
Mahdi Jazini

62

Puede usar el método jquery y javascript: si tiene dos imágenes, por ejemplo:

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

1) Método Jquery->

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

2) Método Javascript->

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

Para este tipo de problema, jquery es el más simple de usar.


21
El póster nunca indicó ningún interés en una solución jQuery. El método jQuery tampoco es más simple. No responda las preguntas de JS con soluciones jQuery (a menos que la publicación indique que lo desean). Simplemente confunde a las personas que intentan aprender JS.
metaColin

66
getElementByClassName devuelve la colección de todos los elementos. También debemos mencionar el índice del elemento. var image = document.getElementsByClassName ("image2") [0]; image.src = "image1.jpg"
Tushar Gaurav el

34

si usa la biblioteca JQuery use esta instrucción:

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

24
La pregunta no pide una respuesta jQuery, incluye una etiqueta jQuery ni sugiere que está bien usar jQuery.
Popnoodles

10
Decirle a la gente que use jQuery cuando una función equivalente está integrada en Javascript no tiene sentido. Cada pregunta JS no requiere una respuesta jQuery. Esta solución es un error que impide que las personas se enteren de lo que Vanilla JS ya puede hacer.
metaColin

27

ahora está bien

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

En este caso, como desea cambiar el srcprimer valor de su elemento, no necesita construir una función. Puede cambiar esto directamente en el elemento:

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

Tienes varias formas de hacer esto. También puede crear una función para automatizar el proceso:

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

Entonces tú puedes:

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

6

Con el fragmento que proporcionó (y sin hacer suposiciones sobre los padres del elemento) podría obtener una referencia a la imagen con

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

y cambiar el src con

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

para que puedas lograr el efecto deseado con

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

de lo contrario, como otros sugirieron, si tiene el control del código, es mejor asignarle ida la imagen una referencia getElementById(ya que es el método más rápido para recuperar un elemento)


6

Dale a tu imagen una identificación. Entonces puedes hacer esto en tu javascript.

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

Puede usar el método ".___" para cambiar el valor de cualquier atributo de cualquier elemento.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.