2013-10-05 32 views
1

我目前有這個代碼,它檢查導航的左側邊緣,並相應地向左滾動。但是,這種方法很慢,所以我想知道如何將其更改爲for循環或類似的東西來捕獲每個200的倍數,然後相應地爲導航製作動畫。
這是我目前的代碼,因爲如果這需要高達-5000 ect,你可以說不是非常高效。
編輯
這些都是我的功能,但他們沒有工作JavaScript中的循環捕捉200的倍數

function goleft(){ 
    var nav = $("#innernavigation"); 
    var navmargin = parseInt(nav.css("margin-left"), 10); 
    if (navmargin != 0) 
    { 
     //time! 
     if (navmargin > -nav.width() && navmargin < -200) 
     { 
      nav.animate({'marginLeft':'-' + ((Math.floor(navmargin/200)-1) * 200) + 'px'}); 
     } 
     if (navmargin > 0) 
     { 
      nav.css({'marginLeft':'0px'}); 
     } 
    } 
} 
function goright(){ 
    var nav = $("#innernavigation"); 
    var navmargin = parseInt(nav.css("margin-left"), 10); 
    if (navmargin != -nav.width()) 
    { 
     //time! 
     if (navmargin > 0 && navmargin < -nav.width()) 
     { 
      nav.animate({'marginLeft':'-' + ((Math.floor(navmargin/200)-1) * 200) + 'px'}); 
     } 
     if (navmargin < -nav.width()) 
     { 
      nav.css({'marginLeft':'-' + nav.width()}); 
     } 
    } 
} 

回答

2

if語句可以做這樣的事情在單。

if (navmargin > -5000 && navmargin < -200) 
{ 
    nav.animate({'marginLeft': (-((Math.floor(navmargin/200)-1) * 200) + 'px'}); 
} 
+0

除了沒有'if'。這隻會執行'> -200'並忽略其他所有內容。 –

+0

謝謝詹姆斯,如果我們檢查了上限,例如5000,那麼呢? – Adil

+0

這樣比較好。雖然我有預感,但-5000只是一個例子,並不需要有上限。 –

0
nav.animate({'marginLeft': (Math.floor(Math.abs(navmargin)/200) * -200) + 'px'}) 
0

只是一個快速的猜測(未測試):

if (navmargin<-200 && navmargin>-5000) { 
    nav.animate({'marginLeft':((navmargin%200-1)*-200)+'px'}); 
}