Foros del Web » Programando para Internet » Jquery »

[jQuery] Por que no funciona este código

Estas en el tema de [jQuery] Por que no funciona este código en el foro de Jquery en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código javascript : Ver original // JavaScript Document $ ( document ) . ready (     function ( )     { ...
  #1 (permalink)  
Antiguo 11/11/2008, 06:24
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
[jQuery] Por que no funciona este código

Código javascript:
Ver original
  1. // JavaScript Document
  2. $(document).ready(
  3.     function()
  4.     {
  5.         resize_images();
  6.     }
  7. );
  8.  
  9. function resize_images()
  10. {
  11.     var MAX_WIDTH = 640;
  12.     var MAX_HEIGHT = 480;
  13.    
  14.     $("#pagecontent img").each(
  15.         function()
  16.         {
  17.             var IMAGE_WIDTH = $(this).width();
  18.             var IMAGE_HEIGHT = $(this).height();
  19.            
  20.             if (IMAGE_WIDTH > MAX_WIDTH)
  21.             {
  22.                 $(this).width(MAX_WIDTH);
  23.             }
  24.         }
  25.     );
  26. }

Funciona perfectamente con Mozilla Firefox, pero no con Internet Explorer ni con Google Chorme
  #2 (permalink)  
Antiguo 11/11/2008, 07:13
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: [jQuery] Por que no funciona este código

Con este codigo si funciona perfectamente.

Código PHP:
// JavaScript Document
$(document).ready(
    function()
    {
        
resize_images();
    }
);

function 
resize_images()
{
    var 
MAX_WIDTH 640;
    var 
MAX_HEIGHT 480;
    
    $(
"#pagecontent img").each(
        function()
        {
            var 
IMAGE_WIDTH = $(this).width();
            var 
IMAGE_HEIGHT = $(this).height();
            
            if (
IMAGE_WIDTH MAX_WIDTH)
            {
                $(
this).width(MAX_WIDTH);
            }
            else
            {
                
alert('Inferior');
            }
        }
    );

Pero no quiero me salga el alert('inferior');
Y si lo saco no funciona.

Es lo mas raro que e visto en mi vida.

Algun moderador, puesto que no es problema de jquery, podias mover esto a javascript??

Gracias
  #3 (permalink)  
Antiguo 11/11/2008, 07:23
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [jQuery] Por que no funciona este código

Cuando pongas un width, tienes que poner unas unidades. 640 qué? 640px, por supuesto. Así que prueba con esto:
Código javascript:
Ver original
  1. $(this).width(MAX_WIDTH+"px");

Si no se soluciona dilo.
  #4 (permalink)  
Antiguo 11/11/2008, 07:36
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: [jQuery] Por que no funciona este código

Sigue sin funcionar.

El problema no esta en el width, sino en el condicional IF.

Funciona si en el else pongo un alert, sino no funciona
  #5 (permalink)  
Antiguo 11/11/2008, 09:52
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [jQuery] Por que no funciona este código

Espera. Si pones el else, ¿sale el alert siempre? ¿Has probado a hacer esto?:

Código javascript:
Ver original
  1. function resize_images() {
  2.     var MAX_WIDTH = 640;
  3.     $("#pagecontent img").each( function() {
  4.             alert($(this).width() > MAX_WIDTH);
  5.     });
  6. }
  #6 (permalink)  
Antiguo 11/11/2008, 10:40
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: [jQuery] Por que no funciona este código

Vale e encontrado el error, y es la cosa mas extraña que me a sucedido nunca.

Resulta que tengo este coódigo

Código javascript:
Ver original
  1. function resize_images()
  2. {
  3.     var MAX_WIDTH = 640;
  4.    
  5.     $(".postbody img").each
  6.     (
  7.         function()
  8.         {
  9.             alert($(this).attr("src"));
  10.             alert($(this).width());
  11.         }
  12.     );
  13. }

Esto me retorna los siguientes valores:

src: http://img113.imageshack.us/img113/604/omfgom0.jpg
width: 700

Excepto en google chorme que me retorna 0 en width.

Pero que pasa si hago esta modificación:

Código javascript:
Ver original
  1. function resize_images()
  2. {
  3.     var MAX_WIDTH = 640;
  4.    
  5.     $(".postbody img").each
  6.     (
  7.         function()
  8.         {
  9.             var IMAGE_SRC = $(this).attr("src");
  10.             var IMAGE_WIDTH = $(this).width();
  11.             alert(IMAGE_SRC);
  12.             alert(IMAGE_WIDTH);
  13.         }
  14.     );
  15. }

Resultado:

En firefox:
src: http://img113.imageshack.us/img113/604/omfgom0.jpg
width: 700

En Internet Explorer:
src: http://img113.imageshack.us/img113/604/omfgom0.jpg
width: 70

En Google Chorme
src: http://img113.imageshack.us/img113/604/omfgom0.jpg
width: 0

Y no se por que!!!!

Alguna ayuda??? Por favor??
  #7 (permalink)  
Antiguo 11/11/2008, 11:07
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [jQuery] Por que no funciona este código

¿Podemos ver el código HTML donde está esa imagen? Ah, y por cierto, no tendrá esa imagen un display:none o alguna cosa similar, no?
  #8 (permalink)  
Antiguo 11/11/2008, 11:27
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: [jQuery] Por que no funciona este código

No la imagen esta normal

Código HTML:
<img alt="Imagen" src="http://img113.imageshack.us/img113/604/omfgom0.jpg"/> 
Es que no puedo subirlo por que el es un foro, y tendria que volver a subir todo otra vez.

Pero no tiene ninguna propiedad exptrña ni nada por el estilo
  #9 (permalink)  
Antiguo 11/11/2008, 11:36
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [jQuery] Por que no funciona este código

Pues no sé... ¿El código es HTML, XHTML? ¿Valida correctamente?
  #10 (permalink)  
Antiguo 11/11/2008, 11:50
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: [jQuery] Por que no funciona este código

Cita:
Iniciado por venkman Ver Mensaje
Pues no sé... ¿El código es HTML, XHTML? ¿Valida correctamente?
HTML, pero no se si validad correctamente ya que estoy en local.

Pero es algo extraño, por que si hago esto:

alert($(this).width());
alert($(this).width());

Los valores son 70 y 700 respectivamente, y sigue siendo el mismo elemento ;S

Mira sigo haciendo pruebas.

Código PHP:
<script type="text/javascript">
$(
document).ready(
    function ()
    {
        
resize_images()
    }
);

function 
resize_images()
{
    $(
".postbody img").each(
        function ()
        {
            
alert('Primero: ' + $(this).attr("src") + ', ' + $(this).width()); 
// Resultado: Primero: http://img113.imageshack.us/img113/604/omfgom0.jpg, 70
            
alert('Segundo: ' + $(this).attr("src") + ', ' + $(this).width()); 
// Resultado: Segundo: http://img113.imageshack.us/img113/604/omfgom0.jpg, 700
        
}
    );
}
</script> 

Última edición por SoutlinK; 11/11/2008 a las 12:11
  #11 (permalink)  
Antiguo 11/11/2008, 13:00
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [jQuery] Por que no funciona este código

¿Ein?? ¿Podrías poner el código completo?
  #12 (permalink)  
Antiguo 11/11/2008, 13:12
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
Respuesta: [jQuery] Por que no funciona este código

sucede por que el explorador no ha rendereado completamente la imagen ;) es decir, estas queriendo manipular imagenes cuando no estan disponibles!! lo que tienes que hacer es esperar a que se cargue por completo la imagen para poder manipularla, es por eso que al poner un alert te funciona, pues al aparecer el alert le da tiempo al explorador de "cargar" la imagen :o

te digo que es esto, porque me pasó cuando hice una galería y no tomaba las dimensiones correctas, entonces lo que hice para solucionarlo fué ponerle un listener a la imagen que se disparaba cuando la imagen esta cargada por completo!! esto que te cuento requiere un poco de labor, la manera más rápida de solucionarlo sería en lugar de ahcer esto:

Código:
$(document).ready(
    function ()
    {
        resize_images()
    }
);
hacer esto:

Código:
$(window).load(function () {
     resize_images()
);
saludos

Última edición por stock; 11/11/2008 a las 13:17 Razón: le puse el tag CODE al código!!
  #13 (permalink)  
Antiguo 11/11/2008, 13:41
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: [jQuery] Por que no funciona este código

Solucionado!!!

Gracias Stock ;)
  #14 (permalink)  
Antiguo 13/11/2008, 12:58
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Respuesta: [jQuery] Por que no funciona este código

Hi !

La solución por la que te funciono es una simple diferencia... Cuando en Jquery haces:
$(document).ready, lo unico que cargas es todo el DOM por lo tanto las imagenes aún no van a estar cargadas.

Cuando haces el onLoad carga la pagina completa antes de proceder.
Supongo que lo sabian pero es cuestion de aclarar un poco más :)

-ByE-
__________________
--
Mi Portfolio Online! Visitalo!
--
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 12:02.