JavaScript - Detectar valor document.getElementById() dentro de un array

 
Vista:
Imágen de perfil de José Carlos
Val: 3
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Detectar valor document.getElementById() dentro de un array

Publicado por José Carlos (2 intervenciones) el 22/04/2020 18:19:34
Hola.

Tengo una galería de imágenes donde intento que cuando el usuario haga click en cada una de ellas se muestre esa misma imagen en grande. Lo logro hacer con su correspondiente "id" y con javascript.

Ejemplo:

1
2
3
4
<li><img id="azul" src="img/azul.png" ></li>
<li><img id="amarillo" src="img/amarillo.png" ></li>
<li><img id="verde" src="img/verde.png" ></li>
<li><img id="rojo" src="img/verde.png" ></li>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<script>
// Get the modal //
var modal = document.getElementById("myModal");
 
 
var img1 = document.getElementById("azul");
var img2 = document.getElementById("amarillo");
var img3 = document.getElementById("verde");
var img3 = document.getElementById("rojo");
 
var modalImg = document.getElementById("img-modal-grande");
var captionText = document.getElementById("caption");
 
//Click en imágenes a mostrar
img1.onclick = function(){
  modal.style.display = "flex";
  modalImg.src = this.src;
  captionText.innerHTML = this.alt;
}
 
img2.onclick = function(){
  modal.style.display = "flex";
  modalImg.src = this.src;
  captionText.innerHTML = this.alt;
}
img3.onclick = function(){
  modal.style.display = "flex";
  modalImg.src = this.src;
  captionText.innerHTML = this.alt;
}
img4.onclick = function(){
  modal.style.display = "flex";
  modalImg.src = this.src;
  captionText.innerHTML = this.alt;
}
 
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
 
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
  modal.style.display = "none";
}
 
</script>

Hasta aquí bien, pero claro si son 20 imágenes e intento hacerlo en un array al intentar coger el valor dentro de document.getElementById() no lo reconoce

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<script>
 
var modal = document.getElementById("myModal");
 
//Coge el valor para luego devolverlo al hacer onclick
 
 
var myArray = ['azul', 'amarillo', 'verde', 'rojo' ];
 
for(i=0;i<myArray.length;i++){
 
	var img = document.getElementById(myArray[i]);
 
	//Prueba añadiendo de nuevo el valor a id, donde aquí si lo reconoce pero al hacer clien en la imagen luego no hace la fución.
	//var img = document.getElementById(myArray[i]).id = myArray[i];
 
}
 
var modalImg = document.getElementById("img-modal-grande");
var captionText = document.getElementById("caption");
 
//Click en imágenes a mostrar
img.onclick = function(){
  modal.style.display = "flex";
  modalImg.src = this.src;
  captionText.innerHTML = this.alt;
}
 
 
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
 
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
  modal.style.display = "none";
}
 
</script>

¿Cómo podría hacer que reconozca el valor del id dentro del array para luego devolverlo o llamarlo al hacer click en cada imagen?

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de José Carlos
Val: 3
Ha disminuido su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Detectar valor document.getElementById() dentro de un array

Publicado por José Carlos (2 intervenciones) el 23/04/2020 00:14:20
Hola de nuevo, con esta nueva opción que me han pasado finalmente me sale perfectamente y a la vez me ahorro más codigo.

1
2
3
4
5
6
7
8
9
10
// seleccionamos todas las img dentro de la lista (li)
var images = document.querySelectorAll("li > img");
 
for (i = 0; i < images.length; i++) {
    images[i].addEventListener("click", function(){
         modal.style.display = "flex";
        modalImg.src = this.getAttribute('src');
        captionText.innerHTML = this.getAttribute('alt');
   });
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar