我有一个应用程序,我正在检查用户的位置,如果他们很近(小于 0.05 m),他们可以单击一个 div,如果他们很远(超过 0.05 m),他们可以单击一个 div。无法点击它。
问题是我对不同的地方有不同的坐标,如果你在其中之一,你应该能够点击它。这使得条件始终为真,因为对于某些位置,您会很远,但对于其中一个位置,它会为真(如果您在范围内)
我尝试了一个 while 语句,当你进入其中一个位置时它会起作用,但如果你出去它永远不会消失也不会显示我的横幅。
//BEING ABLE TO CLICK DIV
while (distance < .05) {
restaurantImAt = nameRestaurant
$('.div-image').attr('src', '/assets/picture.svg')
$('#div').removeClass('disable')
//THIS DOESNT WORK EVENT IF ITS TRUE IF YOURE NOT OUTSIDE THE .05
if (distance > .05){
disableDiv()
$('.page-intro').prepend(
`<p class="outside-location"><i class="fas fa-exclamation-circle"></i> You are currently out of bound</p>
`);
}
break
}
我也尝试过只执行 while(distance){
并将 if 语句放入其中,但它也不起作用。
有谁知道当这两个条件都成立时最好使用什么方法?
最佳答案
您不明白的是,一旦进入 while 循环,while
循环之外的任何代码都将永远不再执行。
因为 while 循环中的距离
没有任何变化,所以其中的代码将永远执行。
Javascript 是单线程的,您的 while 循环将是在该线程上执行的唯一代码,这确实意味着 distance
将永远保留输入时的值。循环,因为任何可能改变距离
的代码永远不会有机会被执行。
您可以使用while
循环,只需确保计算距离
的代码在while
条件下执行即可:
while (getDistance() < .05) { /* do stuff */ }
(假设getDistance
是一个返回当前距离
的函数)。
关于javascript - 两个条件始终为 true 的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56673759/