2013-05-13 56 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是您的变量。