2013-05-13 113 views
1

我寫了一個包含if語句的函數,並且該條件包含一個變量。循環遍歷函數中的多個變量

function interval() { 
     var interval = setInterval(function() { 
      if (x < max) { 
       x = parseInt(x) + 1; 
       $('.max').html(addCommas(x)); 
      } 
     }, 1); 
    }; 

所以這裏最大是我的變量。效果很好,但現在我有三個變量,我想運行相同的功能,但每次都使用不同的變量。我可以複製函數3次,並在每個函數中編輯這個變量,但是這會讓我覺得效率很低。

什麼是最好的方式來實現這個堆疊?

+1

有沒有理由不使用'for'或'while'循環? 'setInterval'在這裏似乎是錯誤的解決方案 – yoavmatchulsky 2013-05-13 10:09:33

+0

爲什麼_parseInt(x)_ - 如果x可能不是數字,您不應該解析_before_將其與max進行比較嗎? – nnnnnn 2013-05-13 10:19:21

回答

1

通行證最大作爲參數傳遞給函數

function interval(max){ 
    var x = 0; //always declare variables 
    var interval = setInterval(function(){ 
    if (x < max){ 
     x = parseInt(x) + 1; 

     $('.max').html(addCommas(x)); 
     } 
    }, 1); 
}; 

我不知道該驅動程序把這個代碼在一個區間。您可能需要考慮使用for循環:

function interval(max){ 
    for(var x = 0; x < max; x++){ 
     $(".max").html(addCommas(x)); 
    }   
}; 
+0

謝謝凱文。這是一個動畫計數器,這就是爲什麼它在一個區間。我不確定如何將該變量添加到函數的參數對我有幫助? – AfricanMatt 2013-05-13 10:21:22

+0

@ user1635375 - 間隔延遲1對於動畫來說是過度殺傷力。瀏覽器實際上並不會那麼快(大多數情況下,如果不是所有的話都會將其四捨五入到四或五)。 – nnnnnn 2013-05-13 10:25:34

+0

@ user1635375我假設你想要爲不同的最大值運行該函數,添加你將創建的其他功能之一。 – 2013-05-13 10:27:43

0

使用函數中的參數並使用相同的函數。

function interval(vfield){ 
    var interval = setInterval(function(){ 
    if (x < vfield){ 
     x = parseInt(x) + 1; 

     $('.max').html(addCommas(x)); 
     } 
    }, 1); 
}; 

其中vfield是您的變量。