如何动态创建多个计时器功能并使用setInterval

时间:2014-05-21 14:53:02

标签: javascript jquery

我的要求就像我得到jsonobject,计数说{noOfInputToCreate:3}并且我需要创建那么多输入元素并增加所有输入元素。

以下示例代码可让您了解要求。

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery   /1/jquery.min.js?ver=2.4.3'></script>
<input class="interval1" value=0><br/>
<input class="interval2" value=0>

<script>
function interval1(){
 $(".interval1").val( parseFloat( $(".interval1").val() ) + 1 );
}
function interval2(){
 $(".interval2").val( parseFloat( $(".interval2").val() ) + 1 );
}

intervalId1 = window.setInterval("interval1()",1000);
intervalId2 = window.setInterval("interval2()",1000);
</script>

如果查看上面的代码,则预定义函数interval1()和interval2()。所以我正在寻找的是我应该能够根据我需要创建的输入而动态创建这些输入并为其添加setInterval。

否则它可能是单一功能。但我遇到的问题就像使用同一个函数多次调用setInterval一样。

任何人都可以提供帮助或提供一些建议。

2 个答案:

答案 0 :(得分:0)

如果你真的想使用单个间隔计时器来调用多个任意定义的函数,那么你可以创建一个函数数组,当你的间隔计时器触发时,你只需调用数组中的所有函数。

var fnList = [];

var timer = setInterval(function() {
    for (var i = 0; i < fnList.length; i++) {
        fnList[i]();
    }
}, 1000);

您可以在列表中添加任意数量的功能:

fnList.push(interval1);
fnList.push(interval2);

仅供参考,使用多个setInterval()计时器也没有问题,每个计时器都有一个计时器。


而且,您的特定问题看起来似乎只能编写一个函数来处理您要处理的所有字段,只需在要处理的每个字段上放置一个公共类class="interval"即可。

var timer = setInterval(function() {
    $(".interval").each(function() {
        this.value = parseFloat(this.value) + 1;
    });
}, 1000);

答案 1 :(得分:0)

将类传递给函数递归settimeout。

   function increment(class){
        $("."+class).text(parseInt($("."+class).text())+1);
        setTimeout(increment,1000);            
    };