Foros del Web » Programando para Internet » Javascript »

Error al ejecutar funcion

Estas en el tema de Error al ejecutar funcion en el foro de Javascript en Foros del Web. Chicos buenas tardes me regalan una ayuda por favor Tengo una duda con este codigo. Cuando ejecuto la funcion la primera vez, los valores alto ...
  #1 (permalink)  
Antiguo 10/01/2013, 17:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 204
Antigüedad: 13 años, 5 meses
Puntos: 1
Error al ejecutar funcion

Chicos buenas tardes me regalan una ayuda por favor

Tengo una duda con este codigo. Cuando ejecuto la funcion la primera vez, los valores alto y ancho aparecen en cero (0), si ejecuto la funcion por segunda vez los valores alto y ancho aparecen correctamente.

¿No entiendo por que? ¿en que estoy fallando?
Código HTML:
Ver original
  1. function mostrar_imagen() {
  2.  
  3.    var nombre_imagen = "imagen.jpg";  
  4.  
  5.    img = new Image();
  6.    img.src = nombre_imagen;
  7.  
  8.    var alto = img.height; //Alto;
  9.    var ancho = img.width; //Ancho;
  10.    
  11.    alert(nombre_imagen);
  12.    alert(ancho);
  13.    alert(alto);
  14.    
  15. }

Gracias
  #2 (permalink)  
Antiguo 10/01/2013, 18:39
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Error al ejecutar funcion

Parece ser un problema de tiempos de carga (como si intentaras acceder a propiedades que sólo están disponibles si la imagen cargó). Intentá así:
Código PHP:
function mostrar_imagen() {
   var 
nombre_imagen "imagen.jpg";   
   
img = new Image();
   
img.onload=function(){
       var 
alto img.height//Alto;
       
var ancho img.width//Ancho;
       
alert(nombre_imagen);
       
alert(ancho);
       
alert(alto);
   }
   
img.src nombre_imagen+'?'+(+new Date);//esto lo agregamos para las versiones de explorer que ignoran el evento onload si la imagen está en caché -esto evita la carga desde la caché-

  #3 (permalink)  
Antiguo 10/01/2013, 18:43
 
Fecha de Ingreso: enero-2013
Mensajes: 8
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Error al ejecutar funcion

Declara la parte de imagen para que carge antes de mandar a llamar la funcion.

Código Javascript:
Ver original
  1. var nombre_imagen = "imagen.jpg";
  2. img = new Image();
  3. img.src = nombre_imagen;
  4. function mostrar_imagen(){
  5.     var alto = img.height;
  6.     var ancho = img.width;
  7.     alert(nombre_imagen);
  8.     alert(ancho);
  9.     alert(alto);
  10.     }
  #4 (permalink)  
Antiguo 10/01/2013, 18:55
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Error al ejecutar funcion

misalabs, eso no te garantiza nada. Necesitás chequear que se ejecute el evento onload de la imagen (o el evento onerror para asumir que nunca cargará y actuar en consecuencia) o usar un temporizador que evalúe las propiedades height y width o la propiedad complete
  #5 (permalink)  
Antiguo 10/01/2013, 19:00
 
Fecha de Ingreso: enero-2013
Mensajes: 8
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Error al ejecutar funcion

Panino5001 tienes razon, veo tu codigo y es mejor ya que actuas siempre y cuando esten cargados los elementos.
  #6 (permalink)  
Antiguo 11/01/2013, 16:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 204
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Error al ejecutar funcion

Panino5001, lo que me sugeriste funciono perfecto, GRACIAS

Tengo una duda, antes de visualizar la imagen redefino las margenes para que la imagen quede centrada en el DIV, lo curioso es que primero me muestra la imagen y a los dos o tres segundos la imagen se centra en el DIV.

He modificado de varias formas el codigo pero no logro que la imagen aparezca centrada inmediatamente aparece en el DIV.

El codigo lo tengo definido asi:

Código HTML:
Ver original
  1. function mostrarImagen() {
  2.  
  3.    var nombre_imagen = "imagen.jpg";
  4.    img = new Image();
  5.    img.onload=function(){
  6.    var alto = img.height; //Alto;
  7.    var ancho = img.width; //Ancho;
  8.  
  9.    if (alto < 400) {
  10.    alto = (400 - alto)/2;
  11.    document.getElementById('solicitud-imagen').style.marginTop = alto+'px';
  12.   }
  13.  
  14.   if (ancho < 400) {
  15.    ancho = (400 - ancho)/2;
  16.    document.getElementById('solicitud-imagen').style.marginLeft = ancho+'px';
  17.   }
  18.  
  19.   }
  20.  
  21.   img.src = nombre_imagen+'?'+(+new Date);//esto lo agregamos para las versiones de explorer que ignoran el evento onload si la imagen está en caché -esto evita la carga desde la caché-
  22.  
  23.   document.getElementById('solicitud-imagen').src = nombre_imagen;  
  24. }

Gracias
  #7 (permalink)  
Antiguo 14/01/2013, 17:24
 
Fecha de Ingreso: noviembre-2010
Mensajes: 204
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Error al ejecutar funcion

Chicos, aunque he modificado el codigo sigo teniendo el mismo problema, cuando carga la imagen, esta aparece en el el rincon superior izquierdo del DIV, a los dos o tres segundos se centra.

¿alguna idea?

Gracias

Etiquetas: funcion
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:37.