Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/07/2012, 10:01
Avatar de Dradi7
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