This question already has answers here: How to use setInterval and clearInterval?                                                                    (5个答案)                                                                        5年前关闭。                    我想使用setInterval来连续检查div的位置并仅触发一次事件。基本上,我正在创建一个非常简单的游戏-我有一个sheep div,可以在页面上左右移动。我想在sheep达到某个点时触发一个事件。我正在使用setInterval检查每200毫秒绵羊的位置-如果绵羊超过100像素,它将创建一个带有位置的警报。问题是setInterval继续每200毫秒触发一次警报,而我只希望它发生一次。 var positionInterval = setInterval(function(){ var sheepPosition = sheep.position(); if (sheepPosition.left > 100) { alert(sheepPosition.left); sheepPosition = 0; } },200);我以为通过在IF函数的末尾包含sheepPosition = 0可以阻止它重复,但是我意识到这是行不通的,因为那只是修改IF函数中的变量,并且每次新的间隔开始时的值取自sheepPosition。那么如何停止setInterval重复多次呢?我也尝试使用变量计数器和sheep.position:var intervalCounter = 0;var positionInterval = setInterval(function(){ var sheepPosition = sheep.position(); if (sheepPosition.left > 100) { alert(sheepPosition.left); intervalCounter = 1; } },200);setInterval(function(){ if (intervalCounter === 1) { positionInterval.clearInterval; } },200);但这也不起作用。有什么建议? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您不必设置另一个间隔来检查您的第一个间隔。您可以直接在positionInterval中执行此操作。所以:var positionInterval = setInterval(function() { var sheepPosition = sheep.position(); if (sheepPosition.left > 100) { alert(sheepPosition.left); clearInterval(positionInterval); }}, 200); (adsbygoogle = window.adsbygoogle || []).push({});
09-26 20:56