悬挂页面的JavaScript代码

时间:2015-10-06 14:07:42

标签: javascript html css3

我正在尝试获取移动div的位置(使用css3动画制作动画)并连续检查它我正在使用下面的A01

while(true)

这里的问题是在第一次警报后页面挂起。此外,如果我在while循环中发出警报,那么它会继续弹出,代码工作正常,但不是。 让我知道如何解决这个问题?

3 个答案:

答案 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