2011-05-09 10 views
6
function moveit() { 

    var newTop = Math.floor(Math.random()*350); 
    var newLeft = Math.floor(Math.random()*1024); 
    var newDuration = 9000 

    $('#friends').animate({ 
     top: newTop, 
     left: newLeft, 
!!! -->  width: "+="+((newTop-$('friends').css('top'))*3), 
     }, newDuration, function() { 
     moveit(); 
     }); 

} 

$(document).ready(function() { 
    moveit(); 
}); 

Se supone que hace que una imagen vuele (funciona). Agregué la línea marcada con "!!! ->" que debería hacer que la imagen se agranda cuanto más cerca esté de la parte inferior de la página.¿Qué hay de malo en este código

¿Qué hice mal? El código no arroja ningún error.

Respuesta

5

$('friends').css('top') devuelve una cadena, se tendrá que convertir esto en un int antes de poder utilizarlo para restar de newTop

parseInt($('friends').css('top'), 10) 

que hacer el truco

También es necesario utilizar un ID o identificador de clase en su selector de jQuery, ya sea '#friends' o '.friends' pero me imagino que usted está buscando algo con el ID de amigos

Prueba este

width: "+="+((newTop - parseInt($('#friends').css('top'), 10))*3), 
+0

Todavía no cambia los tamaños. – FreeSnow

+0

@DalexL - Combine las respuestas de @Jimmy's y @richardneililagan, creo. – JasCav

+0

ver las ediciones de algo que podría ayudar – Jimmy

2

Bastante seguro de que su problema es .css("top") devolverá un valor de cadena como 100px. Desea utilizar .position().top en su lugar para obtener el valor entero en su lugar.

4

¿No se refiere a $('#friends') en lugar de simplemente $('friends')? Su declaración está buscando una etiqueta de elemento "amigos" y tratando de obtener su valor de propiedad CSS top.

Sugiero que también almacene en caché el selector $('friends') para que no tenga que seleccionarlo dos veces para la llamada .animate().

Cuestiones relacionadas