数组中的javascript setInterval

时间:2011-08-30 13:10:40

标签: javascript arrays setinterval

我创建了一个数组并在其中插入了一个setInterval,但是tmp[0]不起作用

tmp = new Array();
v = new Array();
for(i=0; i<2; i++){
j = 0;
tmp[i] = setInterval("if(j<10+(i*5)){alert(i+' '+j);j++;}else{clearInterval(tmp[i])}", 1000);
}

2 个答案:

答案 0 :(得分:5)

使用eval。试试这个:

var tmp = new Array();
var v = new Array();
for (i = 0; i < 2; i++) {
    var j = 0;
    tmp[i] = setInterval(function () {
        if (j < 10 + (i * 5)) {
            alert(i + ' ' + j);
            j++;
        } else {
            clearInterval(tmp[i])
        }
    }, 1000);
}

小提琴:http://jsfiddle.net/FKEL6/(弹出窗口很烦人,所以你知道。)


这可能会做你想要它做的事情:

var tmp = new Array();
var v = new Array();
var i = 0;
for (i = 0; i < 2; i++) {
    createTmp(i);
}

function createTmp(p){
    var j = 0;
    tmp[p] = setInterval(function () {
        if (j < 10 + (p * 5)) {
            alert(p + ' ' + j);
            j++;
        } else {
            clearInterval(tmp[p])
        }
    }, 1000);
}
console.log(tmp);

小提琴:http://jsfiddle.net/FKEL6/5/(也有恼人的警报)

答案 1 :(得分:0)

这样的事情的输出是:

2 0
2 1
2 2
2 3
2 4
2 5
...
2 18
2 19

等,这是正确的。当j&lt; 20。

但最后你的计时器仍在继续,你所做的就是一遍又一遍地调用clearInterval(tmp [2]),每秒两次。