How can I change the src attribute of an img tag using javascript?
<img src="../template/edit.png" name=edit-save/> at first I have a default src which is "../template/edit.png" and I wanted to change it with "../template/save.png" onclick.
UPDATED: here's my html onclick:
<a href='#' onclick='edit()'><img src="../template/edit.png"/></a> and my JS
function edit() { var inputs = document.myform; for(var i = 0; i < inputs.length; i++) { inputs[i].disabled = false; } } I've tried inserting this inside the edit(), it works but need to click the image twice
var edit_save = document.getElementById("edit-save"); edit_save.onclick = function(){ this.src = "../template/save.png"; } 09 Answers
Give your img tag an id, then you can
document.getElementById("imageid").src="../template/save.png"; 2You can use both jquery and javascript method: if you have two images for example:
<img src="image1.jpg" alt="image"> <img src="image2.jpg" alt="image"> 1)Jquery Method->
$(".image2").attr("src","image1.jpg"); 2)Javascript Method->
var image = document.getElementsByClassName("image2"); image.src = "image1.jpg" For this type of issue jquery is the simple one to use.
2if you use the JQuery library use this instruction:
$("#imageID").attr('src', 'srcImage.jpg'); 2its ok now
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"; } 0Give your image an id. Then you can do this in your javascript.
document.getElementById("blaah").src="blaah"; You can use this syntax to change the value of any attribute of any element.
<img src="../template/edit.png" name="edit-save" onclick="this.src = '../template/save.png'" /> 1With the snippet you provided (and without making assumptions about the parents of the element) you could get a reference to the image with
document.querySelector('img[name="edit-save"]'); and change the src with
document.querySelector('img[name="edit-save"]').src = "..." so you could achieve the desired effect with
var img = document.querySelector('img[name="edit-save"]'); img.onclick = function() { this.src = "..." // this is the reference to the image itself }; otherwise, as other suggested, if you're in control of the code, it's better to assign an id to the image a get a reference with getElementById (since it's the fastest method to retrieve an element)
In this case, as you want to change the src of the first value of your element, you have no need to build up a function. You can change this right in the element:
<a href='#' onclick='this.firstChild.src="../template/save.png"')'> <img src="../template/edit.png"/> </a> You have several ways to do this. You can also create a function to automatize the process:
function changeSrc(p, t) { /* where p: Parent, t: ToSource */ p.firstChild.src = t } Then you can:
<a href='#' onclick='changeSrc(this, "../template/save.png");'> <img src="../template/edit.png"/> </a> Maybe because you have a tag like a parent of the tag. That why you have to click two time the images.