2011-05-09 281 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(); 
}); 

這是應該讓圖像飛來飛去(工程)。 我添加了標有「!!! - >」的行,它應該使圖像越靠近頁面底部越大。這段代碼有什麼問題

我做錯了什麼?該代碼不會引發任何錯誤。

回答

5

$('friends').css('top')返回一個字符串,你需要將其轉換爲int之前,你可以用它從newTop

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

減去會做的伎倆

另外你需要使用一個ID或類標識符在你的jQuery選擇器,要麼'#friends''.friends'但我想你正在尋找的東西的朋友的ID

試試這個

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

它仍然不會改變大小。 – FreeSnow 2011-05-09 17:14:12

+0

@DalexL - 結合@吉米和@ richardneililagan的答案,我相信。 – JasCav 2011-05-09 17:19:43

+0

看到編輯的東西,可能會幫助 – Jimmy 2011-05-09 17:21:02

2

很確定你的問題是.css("top")會返回一個字符串值,如100px。您想使用.position().top來代替獲取整數值。

4

難道你的意思是$('#friends')而不是僅僅是$('friends')?您的聲明正在尋找一個元素標籤「朋友」,並試圖獲得它的CSS屬性值top

我建議你也緩存$('friends')選擇器,這樣你就不必爲.animate()調用選擇兩次。