javascript setInterval 在数组中

发布于 2024-12-02 11:42:46 字数 240 浏览 1 评论 0原文

我创建了一个数组并在其中插入了 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);
}

I created an array and inserted a setInterval in it, but tmp[0] doesn't work

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

日裸衫吸 2024-12-09 11:42:46

不要使用 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);
}

Fiddle: 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);

Fiddle: http://jsfiddle.net/FKEL6/5/(还有烦人的警报)

Do Not use eval. Try this:

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);
}

Fiddle: http://jsfiddle.net/FKEL6/ (it is annoying with the popups, just so you are aware.)


This might do what you want it to do:

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);

Fiddle: http://jsfiddle.net/FKEL6/5/ (also has annoying alerts)

夏尔 2024-12-09 11:42:46

这样的事情的输出是:

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

etc,这是正确的。当 j < 时停止。 20.

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

The output of such a thing is:

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

etc, which is correct. It stops when j < 20.

But at the end your timer is still going on and all you are doing is calling clearInterval(tmp[2]) over and over, twice a second.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文