Foros del Web » Programando para Internet » Javascript »

funcion que no actualiza el campo style a la primera pero si a la segunda

Estas en el tema de funcion que no actualiza el campo style a la primera pero si a la segunda en el foro de Javascript en Foros del Web. Buenas; Quiero mostrar una imagen en la misma pagina al clickear sobre un link. Esta imagen debe estar superpuesta al la pagina web y quedar ...
  #1 (permalink)  
Antiguo 31/07/2012, 09:30
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
funcion que no actualiza el campo style a la primera pero si a la segunda

Buenas;

Quiero mostrar una imagen en la misma pagina al clickear sobre un link. Esta imagen debe estar superpuesta al la pagina web y quedar centrada.

Lo que he hecho ha sido crear un div:

Código HTML:
<div id="marco" style="display:none; top:50%; left:50%; position: fixed;">
</div> 
el link llama a una funcion javascript que cambia los valores style e inserta la imagen dentro del div:

Código PHP:
onClick="showImg('<?php echo $url ?>');"
Código Javascript:
Ver original
  1. function showImg(url){
  2.     var text = "<img src='img/"+url+"'>"
  3.     var img = new Image();
  4.     img.src = 'img/db/'+url;
  5.    
  6.     document.getElementById("marco").innerHTML=text;
  7.     document.getElementById("marco").style.marginLeft="-"+parseInt(img.width/2);
  8.     document.getElementById("marco").style.marginTop="-"+parseInt(img.height/2);
  9.     document.getElementById("marco").style.display="block";
  10. }

El problema es que cuando clickeo en el enlace se muestra la imagen pero sin hacer los ajustes marginLeft y marginTop, y lo mas raro es que al volver a hacer click en el link coloca bien la imagen....

Alguna sugerencia? Gracias de antemano!
  #2 (permalink)  
Antiguo 31/07/2012, 10:01
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

Cita:
Iniciado por uzor Ver Mensaje
Buenas;

Quiero mostrar una imagen en la misma pagina al clickear sobre un link. Esta imagen debe estar superpuesta al la pagina web y quedar centrada.

Lo que he hecho ha sido crear un div:

Código HTML:
<div id="marco" style="display:none; top:50%; left:50%; position: fixed;">
</div> 
el link llama a una funcion javascript que cambia los valores style e inserta la imagen dentro del div:

Código PHP:
onClick="showImg('<?php echo $url ?>');"
Código Javascript:
Ver original
  1. function showImg(url){
  2.     var text = "<img src='img/"+url+"'>"
  3.     var img = new Image();
  4.     img.src = 'img/db/'+url;
  5.    
  6.     document.getElementById("marco").innerHTML=text;
  7.     document.getElementById("marco").style.marginLeft="-"+parseInt(img.width/2);
  8.     document.getElementById("marco").style.marginTop="-"+parseInt(img.height/2);
  9.     document.getElementById("marco").style.display="block";
  10. }

El problema es que cuando clickeo en el enlace se muestra la imagen pero sin hacer los ajustes marginLeft y marginTop, y lo mas raro es que al volver a hacer click en el link coloca bien la imagen....

Alguna sugerencia? Gracias de antemano!

Para que te pueda tomar los valores de width o height correctamente debes hacerlo en el evento onload de la imagen asi

Código Javascript:
Ver original
  1. img.onload = function(){
  2.     document.getElementById("marco").innerHTML=text;
  3.     document.getElementById("marco").style.marginLeft="-"+parseInt(img.width/2);
  4.     document.getElementById("marco").style.marginTop="-"+parseInt(img.height/2);
  5.     document.getElementById("marco").style.display="block";
  6. }
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 31/07/2012, 10:39
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

Cita:
Iniciado por Dradi7 Ver Mensaje
Para que te pueda tomar los valores de width o height correctamente debes hacerlo en el evento onload de la imagen asi

Código Javascript:
Ver original
  1. img.onload = function(){
  2.     document.getElementById("marco").innerHTML=text;
  3.     document.getElementById("marco").style.marginLeft="-"+parseInt(img.width/2);
  4.     document.getElementById("marco").style.marginTop="-"+parseInt(img.height/2);
  5.     document.getElementById("marco").style.display="block";
  6. }
Gracias por la respuesta pero sigue sin funcionar :S
  #4 (permalink)  
Antiguo 31/07/2012, 10:49
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

Estas seguro porque yo probé el código y ya me toma los datos de width y height de la imagen y me aplica bien el margin
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 01/08/2012, 02:40
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

Cita:
Iniciado por Dradi7 Ver Mensaje
Estas seguro porque yo probé el código y ya me toma los datos de width y height de la imagen y me aplica bien el margin
Seguro, la cosa es que la imagen que muestro es la que inserto dentro del DIV mediante innerHTML, la imagen que creo dentro de la funcion javascript a partir de la URL es solo para saber sus dimensiones.
  #6 (permalink)  
Antiguo 01/08/2012, 05:38
ger84
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

no debería ser
Código Javascript:
Ver original
  1. function showImg(url){
  2.     var text = "<img src='img/"+url+"'>"
  3.     var img = new Image();
  4.     img.src = 'img/db/'+url;
  5.    
  6.     document.getElementById("marco").innerHTML=text;
  7.     document.getElementById("marco").style.marginLeft="-"+parseInt(img.width)/2;
  8.     document.getElementById("marco").style.marginTop="-"+parseInt(img.height)/2;
  9.     document.getElementById("marco").style.display="block";
  10. }
  #7 (permalink)  
Antiguo 01/08/2012, 07:23
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

Cita:
Iniciado por ger84 Ver Mensaje
no debería ser
Código Javascript:
Ver original
  1. function showImg(url){
  2.     var text = "<img src='img/"+url+"'>"
  3.     var img = new Image();
  4.     img.src = 'img/db/'+url;
  5.    
  6.     document.getElementById("marco").innerHTML=text;
  7.     document.getElementById("marco").style.marginLeft="-"+parseInt(img.width)/2;
  8.     document.getElementById("marco").style.marginTop="-"+parseInt(img.height)/2;
  9.     document.getElementById("marco").style.display="block";
  10. }

que quieres decir?
Alguien que pueda ayudarme? Gracias de antemano!

Última edición por uzor; 01/08/2012 a las 16:22
  #8 (permalink)  
Antiguo 02/08/2012, 05:58
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: funcion que no actualiza el campo style a la primera pero si a la segunda

Ya lo he resuelto... por si a alguien le interesa:

El problema era que usaba el tamaño de una imagen que aun no existia en el lado del cliente, por ello a la segunda carga si funcionaba. Lo que he hecho es pasar como parametro a la funcion javascript el tamaño de la imagen junto con su URL.

FIN

Etiquetas: funcion, html, php, primera, segunda, style, actualizar, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:18.