javascript - 两个条件始终为 true 的循环

标签 javascript jquery

我有一个应用程序,我正在检查用户的位置,如果他们很近(小于 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/

相关文章:

javascript - 使用JavaScript一一获取标签 'a'中的列表值

javascript - 自定义错误消息未从 javascript ajax 返回自定义消息

javascript - 展开可折叠的 div 后阻止 ui

php - 具有可变数量的 where 子句的 Laravel 5 查询

jquery - jQuery 中的 .animate 给出了意想不到的结果

jquery - 使用 jquery 将 <td> 从其父级 <tr> 定位为带有数据属性的 <td>

javascript - Bootstrap 下拉列表与 jQuery.dropdown 冲突

javascript - php 的 HTTPRequest 在 firefox 中不返回任何值

javascript - 具有多个独立组件的 UI 架构

javascript - Jquery 是否自动检查数组的每个元素的 is() 方法?