Ver Mensaje Individual
  #7 (permalink)  
Antiguo 17/09/2015, 14:53
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: Llamar un div de acuerdo a un id

Ya veo. En ese caso, podrías hacer algo como esto:

Código PHP:
Ver original
  1. <div id = "contenedor">
  2. <?php
  3. while ($row = mysqli_fetch_array($query)){
  4. ?>
  5.      <div>
  6.           <img src = "../imagenes/"<?=$row['imagen']?> />
  7.           <button class = "boton">Mostrar/Ocultar</button>
  8.      </div>
  9. <?php
  10. }
  11. ?>
  12. </div>

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     document.querySelector("#contenedor").addEventListener("click", function(event){
  3.         if (event.target.className == "boton"){
  4.             var boton = event.target,
  5.                 padre = boton.parentNode,
  6.                 img = padre.querySelector("img");
  7.  
  8.             if (img.offsetHeight > 0){
  9.                 img.style.display = "none";
  10.             }
  11.             else{
  12.                 img.style.display = "inline";
  13.             }
  14.         }
  15.     }, false);
  16. }, false);

El proceso es sencillo. Primero, debes de tener un <div> en el cual almacenarás las imágenes y los botones, lo cual, por lo que cuentas, ya lo tienes. En este ejemplo, le asigno el identificador "contenedor", pero puedes ponerle el que prefieras.

Teniendo esto, procedes con la carga de los datos desde la base de datos. Por cada iteración del bucle, vas a añadir un <div> al <div> principal, el cual contendrá a la imagen y botón respectivo. Esto ayudará a que mantengas aislados cada par imagen-botón y así será más fácil llevar un control para mostrar y ocultar cada imagen.

Al botón le asigno una clase para poder identificarlo más adelante. Para casos en los que manipularemos elementos creados dinámicamente, nos conviene utilizar clases en lugar de un id, ya que las clases sí pueden repetirse, algo que no puede ocurrir con los id. La asignación de la imagen al elemento <img> es solo un ejemplo de cómo puedes hacerlo, puesto que, la ruta que asignes, debe de coincidir con la que realmente corresponde a la imagen.

En el código JavaScript, luego de cargar todos los elementos del documento, se ejecutará una función en la cual se delega una función al elemento de id "contenedor", es decir, al <div> principal, cuando se produzca el evento click en él, como, por ejemplo, cuando se pulse algún elemento que contenga. En dicha función, tomaremos, mediante la propiedad event.target, al elemento directamente afectado por el evento, es decir, al que se le dio el clic. Tomamos su clase y, si es igual a la que asignamos a los botones, lo cual quiere decir que se pulsó alguno de los botones, lo almacenamos en una variable, tomamos al elemento que lo contiene mediante la propiedad .parentNode y buscamos en este a la imagen.

Finalmente, mediante la propiedad .offsetHeight, verificamos si la altura de la imagen es mayor a cero, lo cual equivale a determinar si el elemento es visible. De ser así, lo ocultamos, caso contrario, lo mostramos.

Un saludo
__________________
«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