Change the Source of an Image Using the src Property in JavaScript. To change the source or src of an image, you need to add an id or class to the image tag. You can get the image element using the name of the id or class , and you can change the source or src of the image using the src property.
You can change an HTML image src attribute programatically by using JavaScript.
createElement('a'); // setting the src attribute to the (hopefully) valid URI from above img. src = src; // setting the href attribute to the (hopefully) valid URI from above a. href = href; // appending the 'img' to the 'a' a. appendChild(img); // inserting the 'a' element *after* the 'form' element parent.
Step 1: Firstly, we have to type the Html code in any text editor or open the existing Html file in the text editor in which we want to change the size of an image. Step 2: Now, place the cursor inside the img tag. And then, we have to use the height and width attribute of the img tag for changing the size of an image.
function changeImage(a)
so there is no such thing as a.src
=> just use a
.
demo here
If you will always have the pattern on _b
instead of _t
you can make it more generic by passing reference to the image itself:
onclick='changeImage(this);'
Then in the function:
function changeImage(img) {
document.getElementById("img").src = img.src.replace("_t", "_b");
}
Your only real problem is you are passing a string, not an object with a .src
property
Some suggestions:
<button>
data-
prefixed attributes for event data on the elementMarkup:
<div id="main_img">
<img id="img" src="1772031_29_b.jpg">
</div>
<ul id="thumb_img">
<li><button data-src='1772031_29_b.jpg'><img src='1772031_29_t.jpg' /></button></li>
<li><button data-src='1772031_55_b.jpg'><img src='1772031_55_t.jpg' /></button></li>
<li><button data-src='1772031_53_b.jpg'><img src='1772031_53_t.jpg' /></button></li>
</ul>
JavaScript:
If you need to support IE and other legacy browsers, Use a proper polyfill for Array.from
function clickedButton(btn, event) {
document.getElementById('img').src = btn.getAttribute('data-src');
}
function bindClick(btn) {
btn.addEventListener('click', clickedButton.bind(null,btn));
}
// Setup click handler(s) when content is loaded
document.addEventListener("DOMContentLoaded", function(){
Array.from(document.querySelectorAll('#thumb_img > button'))
.forEach(bindClick));
});
Edit: Vanilla JS for modern browsers.
You've got a few changes (this assumes you indeed still want to change the image with an ID of IMG, if not use Shadow Wizard's solution).
Remove a.src
and replace with a
:
<script type="text/javascript">
function changeImage(a) {
document.getElementById("img").src=a;
}
</script>
Change your onclick
attributes to include a string of the new image source instead of a literal:
onclick='changeImage( "1772031_29_b.jpg" );'
I also tube that problem. But solve it by an instance of an image every time you change the source (image).
It seems that would be called onload only once. But this way, you can change image whenever you want.
function chageIcon(domImg,srcImage)
{
var img = new Image();
img.onload = function()
{
// Load completed
domImg.src = this.src;
};
img.src = srcImage;
}
Mode use.
chageIcon(document.getElementById("img"),"newIcon.png");
The problem was that you were using .src
without needing it and
you also needed to differentiate which img
you wanted to change.
function changeImage(a, imgid) {
document.getElementById(imgid).src=a;
}
<div id="main_img">
<img id="img" src="1772031_29_b.jpg">
</div>
<div id="thumb_img">
<img id="1" src='1772031_29_t.jpg' onclick='changeImage("1772031_29_b.jpg", "1");'>
<img id="2" src='1772031_55_t.jpg' onclick='changeImage("1772031_55_b.jpg", "2");'>
<img id="3" src='1772031_53_t.jpg' onclick='changeImage("1772031_53_b.jpg", "3");'>
</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With