我正在尝试获取移动div的位置(使用css3动画制作动画)并连续检查它我正在使用下面的A01
while(true)
这里的问题是在第一次警报后页面挂起。此外,如果我在while循环中发出警报,那么它会继续弹出,代码工作正常,但不是。 让我知道如何解决这个问题?
答案 0 :(得分:2)
您可以使用while (true)
:
setInterval
。
a = setInterval(function () {
var temp = getObstaclePosition();
var temp2 = getPlanePosition();
if(temp[0] <= temp2[0]+500){
document.getElementsByClassName("plane")[0].style.display = "none";
clearInterval(a);
}
}, 100);
答案 1 :(得分:2)
当您在该循环内时,页面不会渲染,因此元素的位置不会改变。这导致循环永无止境。
如果你想做这样的事情,你必须使用递归 setTimeout
或普通的setInterval
实现。
使用它们,每次超时检查一次。
https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout
答案 2 :(得分:2)
JavaScript在同一个线程中运行,因此如果某个循环占用了无限循环,则其余循环不再运行。
作为循环的替代方法,您可以使用setInterval
,它会重复执行函数或代码段:
setInterval(new function() {
// whatever
}, 100); // repeat every 100 ms, i.e. 10 times per second