为了账号安全,请及时绑定邮箱和手机立即绑定

带有两个条件的循环始终为真

带有两个条件的循环始终为真

浮云间 2021-06-30 18:00:40
我有一个应用程序,我正在检查用户的位置,如果他们很近(小于 0.05 m),他们可以点击一个 div,如果他们很远(超过 0.05 m),他们就不能单击它。问题是我在不同的地方有不同的坐标,如果你在其中之一,你应该能够点击它。这使得条件总是正确的,因为对于某些位置你会很远但对于一个它会是真的(如果你在绑定)我尝试了一个 while 语句,当你进入其中一个位置时它会起作用,但是如果你出去它永远不会消失也不会显示我的横幅。//BEING ABLE TO CLICK DIVwhile (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 语句放在里面,但它也不起作用。有谁知道当两个条件都成立时使用的最佳方法是什么?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您无法理解的是,一旦进入 while 循环,while循环外的任何代码将永远不会再执行。

因为没有什么改变distance 内部while循环,它里面的代码将永远保持执行。

Javascript 是单线程的,并且您的 while 循环在其中时将是在该线程上执行的唯一代码,这确实意味着distance它将永远保持进入循环时的值,因为任何可能更改的代码distance永远不会有机会被处决。

您可以使用while循环,您只需要确保distancewhile条件中执行计算 的代码:

 while (getDistance() < .05) { /* do stuff */ }

(假设getDistance是一个返回当前的函数distance)。


查看完整回答
反对 回复 2021-07-08
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信