我在一个函数中有一个setinterval,在第一次点击时似乎一切正常,但随后的每一次点击都会加速这个计时器。我不明白为什么。
function startGame() {
    var myVar=setInterval(function(){myTimer()},100);
}发布于 2013-04-05 19:57:06
第二次单击时,第一个间隔也有效,因为此事件在100ms内发生两次。试试这个:
var myVar;
function startGame() {
    if(myVar)
        clearInterval(myVar);
    myVar=setInterval(function(){myTimer()},100);
}或者:
var myVar;
function startGame() {
    if(!myVar)
        myVar=setInterval(function(){myTimer()},100);
}发布于 2013-04-05 19:59:15
Setinterval将函数设置为每X毫秒运行一次,在你的例子中,我猜你点击一次,它就会每100毫秒运行一次,然后你再点击一次,它就会每100毫秒运行一次(所以现在,平均每50毫秒你就会运行一次)。
我会推荐setTimeout,但我也不认为这是你需要的。我认为您正在尝试使用setinterval作为游戏循环,对吗?在这种情况下,您需要一种只运行一次的方法。
https://stackoverflow.com/questions/15833296
复制相似问题