So I managed to get the images I set under the same class to load up their respective fullsized images when clicked on.
However, I remembered seeing there was a way to simplify it further?
This is what I have so far, that is working out fine, but just needs to be simplified for convenience:
JavaScript
x
114
114
1
**The HTML:**
2
<div class="section-waterSustains" id="water_Sustains">
3
<h3>How water sustains nature</h3>
4
<br>
5
<div class="waterSustains_collagesht">
6
<!----Creating the collage picture-->
7
<div class="waterSustains_collagepic">
8
<img class="ws-collagePic" id="collagePic1" src="images/africa-deer-drinking-water-preview.png">
9
<img class="ws-collagePic" id="collagePic2" src="images/Frog_During_Rain_preview.png">
10
<img class="ws-collagePic" id="collagePic3" src="images/Bird_drinking_Water_preview.png">
11
<img class="ws-collagePic" id="collagePic4" src="images/12_YT_SPARROW_preview.png">
12
<img class="ws-collagePic" id="collagePic5" src="images/Fishes-swiming-preview.png">
13
<img class="ws-collagePic" id="collagePic6" src="images/kitten_watching_rain_drops_roll_down_window_preview.png">
14
</div>
15
<p class="waterSustains_collageCaption">Click the Animals and Plants to see how they interact with Nature everyday!</p>
16
</div>
17
18
<!-----Creating Overlay and full image-->
19
<div id="overlayCollage01" class="collageOverlay">
20
<sl-icon-button name="x" label="Close button" circle size="large" id="overlay-CloseBtn"></sl-icon-button>
21
<img class="overlay-Content" id="img01" src="images/africa-deer-drinking-water.jpg">
22
</div>
23
24
<div id="overlayCollage02" class="collageOverlay">
25
<sl-icon-button name="x" label="Close button" circle size="large" id="overlay-CloseBtn"></sl-icon-button>
26
<img class="overlay-Content" id="img01" src="images/Frog_During_Rain_Wallpaper.jpg">
27
</div>
28
29
<div id="overlayCollage01" class="collageOverlay">
30
<sl-icon-button name="x" label="Close button" circle size="large" id="overlay-CloseBtn"></sl-icon-button>
31
<img class="overlay-Content" id="img01" src="images/Bird_drinking_Water.jpg">
32
</div>
33
34
<div id="overlayCollage01" class="collageOverlay">
35
<sl-icon-button name="x" label="Close button" circle size="large" id="overlay-CloseBtn"></sl-icon-button>
36
<img class="overlay-Content" id="img01" src="images/12_YT_SPARROW_1391748f.jpg">
37
</div>
38
39
<div id="overlayCollage01" class="collageOverlay">
40
<sl-icon-button name="x" label="Close button" circle size="large" id="overlay-CloseBtn"></sl-icon-button>
41
<img class="overlay-Content" id="img01" src="images/pexels-harrison-haines-3536511.jpg">
42
</div>
43
44
<div id="overlayCollage01" class="collageOverlay">
45
<sl-icon-button name="x" label="Close button" circle size="large" id="overlay-CloseBtn"></sl-icon-button>
46
<img class="overlay-Content" id="img01" src="images/kitten_watching_rain_drops_roll_down_window_9028683602.jpg">
47
</div>
48
49
50
</div>
51
52
----------------------End HTML-------------------------------------
53
**The Javascript:**
54
/*--------Creating Modal images for How Water sustains nature Collage-------*/
55
56
//Get Overlay
57
var overlay = document.querySelectorAll(".collageOverlay");
58
59
//Get image.
60
var collageImg = document.querySelectorAll(".ws-collagePic");
61
62
//Get overlay to be active on clicking on image
63
collageImg[0].onclick = function() {
64
overlay[0].style.display = "block";
65
}
66
67
collageImg[1].onclick = function() {
68
overlay[1].style.display = "block";
69
}
70
71
collageImg[2].onclick = function() {
72
overlay[2].style.display = "block";
73
}
74
75
collageImg[3].onclick = function() {
76
overlay[3].style.display = "block";
77
}
78
79
collageImg[4].onclick = function() {
80
overlay[4].style.display = "block";
81
}
82
83
collageImg[5].onclick = function() {
84
overlay[5].style.display = "block";
85
}
86
//Get icon button (x) that closes Overlay
87
var overlayClose = document.querySelectorAll("#overlay-CloseBtn");
88
89
// When the user clicks on icon button (x), close the overlay
90
overlayClose[0].onclick = function() {
91
overlay[0].style.display = "none";
92
}
93
94
overlayClose[1].onclick = function() {
95
overlay[1].style.display = "none";
96
}
97
98
overlayClose[2].onclick = function() {
99
overlay[2].style.display = "none";
100
}
101
102
overlayClose[3].onclick = function() {
103
overlay[3].style.display = "none";
104
}
105
106
overlayClose[4].onclick = function() {
107
overlay[4].style.display = "none";
108
}
109
110
overlayClose[5].onclick = function() {
111
overlay[5].style.display = "none";
112
}
113
--------------------------END Javascript--------------------------
114
Thanks mates!
Advertisement
Answer
Use the forEach()
method when working with an array of a class. I have provided a simplified method for your code using forEach()
methods.
JavaScript
1
16
16
1
var overlay = document.querySelectorAll(".collageOverlay");
2
var collageImg = document.querySelectorAll(".ws-collagePic");
3
var overlayClose = document.querySelectorAll("#overlay-CloseBtn");
4
5
Array.from(collageImg).forEach(function(collageImgArray, i) {
6
collageImgArray.addEventListener('click', function() {
7
overlay[i].style.display = "block";
8
});
9
});
10
11
Array.from(overlayClose).forEach(function(overlayCloseArray, i) {
12
overlayCloseArray.addEventListener('click', function() {
13
overlay[i].style.display = "none";
14
});
15
});
16