+ 1

JS, HTML, How to change image of an <img> onclick of another <img>? loop

I have 3 different images (<img> elements). And another <img> inside a <main>. What I want to do is... When you click on the first image, the image inside the <main> changes to whatever the first image is. Same thing for image 2: when you click on image 2 the image inside the <main> changes to whatever image 2 is. I could just use on click for each of the images clicked, but imagine if I had a thousand images. I want to be able to loop instead. But I don’t know how. Code: https://code.sololearn.com/WXljmiYY5154/?ref=app

3rd Feb 2020, 5:23 PM
Ginfio
Ginfio - avatar
5 Respostas
+ 1
you're close. create a variable to hold an index of which image is shown from the array. like img_now = 0; on image click, change the image src to images[img_now]; then change value of img_now event.target.src = images[img_now++] dont forget to reset it back to 0 if img_now is larger than your array size
3rd Feb 2020, 5:41 PM
Taste
Taste - avatar
+ 1
Taste should I put e.target.src = images[img_now++] inside the foreach (at the bottom, in comments), or where? Also, where did e. come from? Like is ot a variable, or ..
3rd Feb 2020, 5:48 PM
Ginfio
Ginfio - avatar
+ 1
in the click event. event listener are actually send Event object to callback. you can use them to retrieve the element that trigger the event (in this case is <img>). let img_now = 0; elm.addEventListener('click', function(event) { event.target.src = images[img_now++] //event.target here is refer to clicked <img> //that triger the event })
3rd Feb 2020, 5:52 PM
Taste
Taste - avatar
+ 1
Mirielle👽 yea. is that ES6 ?
3rd Feb 2020, 6:00 PM
Ginfio
Ginfio - avatar
0
Taste this is what I got so far: https://code.sololearn.com/WXljmiYY5154/?ref=app event.target ... is changing the .src of the clicked element. instead, it should change the main_bc (the <img> inside the <main>).... based on which image (element) is clicked. I tried to put event.target.src, it says undefined.
4th Feb 2020, 8:43 PM
Ginfio
Ginfio - avatar