Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2016, 21:31
newb
 
Fecha de Ingreso: marzo-2014
Mensajes: 41
Antigüedad: 11 años
Puntos: 0
onclick se ejecuta automaticamente en la creacion

saben porque al crear las imagenes ingresa a este metodo inmeditamente habilitando la ventana flotante sin haber dado click?.
Ademas, una vez cerrada la ventana no vuelve a suceder el evento, es como que si no se le hubiese asignado ese evento a las imagenes.

Código Javascript:
Ver original
  1. //el parametro datos es el nombre del archivo .json, en este caso "datosLibros.json"
  2. function cargarLibros(datos){
  3.     loadJSON(cargarLibros,datos);
  4.     var libros=JSON.parse(datos);
  5.     var ref=document.getElementById("librosInternacionales");
  6.     var s="";
  7.     for(var i=0;i<libros.length;i++){
  8.        
  9.         var div=document.createElement("div");
  10.         div.className="divImg";
  11.         div.id="foto"+i;
  12.         ref.appendChild(div);
  13.        
  14.         var imagen=document.createElement("img");
  15.         imagen.className="fotos";
  16.         imagen.src="imagenes/libro"+i+".jpg";
  17.         imagen.alt="imagen_libro";
  18.         imagen.onclick=clickImg(libros,""+i); //En esta linea es donde salta al metodo clickImg sin haber dado click
  19.        
  20.        
  21.         div.appendChild(imagen);
  22.        
  23.     }
  24. }
  25.  
  26.  
  27. //----------------Este es el metodo que se ejecuta al dar click en una imagen, el que quiero agregar como atributo on click a cada imagen----------------
  28.  
  29. function clickImg(datos,numFoto){
  30.    
  31.     var libros=datos;
  32.     var a=document.getElementById("ventana-flotante");
  33.     a.style.visibility='visible';
  34.            
  35.     var v=document.getElementById("contenedor");
  36.            
  37.     var obj=new Object();
  38.     s=obj.dato1=libros[numFoto].titulo;
  39.     v.innerHTML=s;
  40.    
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  
  47. function loadJSON(callback, jsonFile) {
  48.     var xobj = new XMLHttpRequest();
  49.     xobj.overrideMimeType("application/json");
  50.  
  51.     xobj.open('GET', jsonFile, true);
  52.  
  53.     xobj.onreadystatechange = function () {
  54.         if (xobj.readyState === 4 && xobj.status === 200) {
  55.             callback(xobj.responseText);
  56.         }
  57.     };
  58.     xobj.send(null);
  59. }

Última edición por newb; 14/04/2016 a las 22:04