Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/05/2015, 11:08
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Mostrar Conjunto de Imagenes

Una práctica manera de hacer lo que buscas usando clases, es aplicando una determinada clase al elemento que se desea mostrar y quitársela al elemento que actualmente la posee, para lo cual lo buscaré mediante dicha clase.

En este pequeño ejemplo, hago uso de la delegación de eventos y así no tener que utilizar un bucle para aplicar el evento a cada opción.

Código HTML:
Ver original
  1. <ul>
  2.     <li>Opción 1</li>
  3.     <li>Opción 2</li>
  4.     <li>Opción 3</li>
  5. </ul>
  6. <div id = "contenedor">
  7.     <img src = "imagen1.jpg" class = "noVisible" />
  8.     <img src = "imagen2.jpg" class = "noVisible" />
  9.     <img src = "imagen3.jpg" class = "noVisible" />
  10. </div>

Código CSS:
Ver original
  1. .noVisible{
  2.     display: none;
  3. }
  4.  
  5. .visible{
  6.     display: block;
  7. }

Código Javascript:
Ver original
  1. var ul = document.querySelector("ul"),
  2.     ulLi = ul.querySelectorAll("li"),
  3.     img = document.querySelectorAll("#contenedor img"),
  4.     elem, pos, vis;
  5.  
  6. ul.addEventListener("click", function(event){
  7.     elem = event.target;
  8.     if (elem.tagName == "LI"){
  9.         pos = [].indexOf.call(ulLi, elem);
  10.         vis = document.querySelector(".visible") || null;
  11.         if (vis){
  12.             vis.className = "noVisible";
  13.         }
  14.         img[pos].className = "visible";
  15.     }
  16. }, false);

DEMO

Primero, tomo a la lista desordenada, al conjunto de opciones que este posee y al conjunto de imágenes del contenedor, además, declaro tres variables que usaré más adelante.

Cuando se produzca el evento click en la lista desordenada, ejecuto una función en la cual almaceno en una de las tres variables finales al elemento que acaba de ser pulsado, luego, verifico si se trata de una opción de la lista; de ser así, tomo la posición que ocupa dentro de ella (empezando a contar desde cero), luego, tomo al elemento que posea la clase visible y la asigno a otra de las variables o le asigno null si no hay (que es lo que ocurrirá la primera vez puesto que no se ven las imágenes al inicio). Enseguida, verifico si se logró encontrar algún elemento que posea dicha clase y, de ser así, se la cambio por la clase noVisible, con lo que queda oculta nuevamente. Finalmente, asigno la clase visible a la imagen cuya posición sea equivalente a la opción seleccionada.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand