对于循环结束过早的功能?

时间:2011-12-17 14:48:20

标签: javascript for-loop setinterval

我有以下代码:

var counter = 0;

setInterval(run, 10);

function run() {

    counter++;  

    for (i=0; i<=100; i++) {

        // do something complicated
    }

    alert(counter);
}

出于某种原因,警报永远不会被解雇

是否有人知道如何发生这种情况?


按照大众需求,jsFiddle上的整个代码:

http://jsfiddle.net/Kriem/ZjPjW/

3 个答案:

答案 0 :(得分:5)

你的for循环错误,你有for(i=0; i<=block.length; i++),你应该for(i=0; i<block.length; i++)。你在最后一项上得到了一个未定义的内容。

答案 1 :(得分:3)

因为在您的JS Fiddle的第188行,您正在呼叫blocks[i].updatePosition(dt);,Chrome的控制台告诉我Uncaught TypeError: Cannot call method 'updatePosition' of undefined

即。 blocks[i]未定义。

答案 2 :(得分:-2)

我的第一个猜测是该函数不会被调用。