猿问

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

我有一个应用程序,我正在检查用户的位置,如果他们很近(小于 0.05 m),他们可以点击一个 div,如果他们很远(超过 0.05 m),他们就不能单击它。


问题是我在不同的地方有不同的坐标,如果你在其中之一,你应该能够点击它。这使得条件总是正确的,因为对于某些位置你会很远但对于一个它会是真的(如果你在绑定)


我尝试了一个 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 语句放在里面,但它也不起作用。


有谁知道当两个条件都成立时使用的最佳方法是什么?


浮云间
浏览 170回答 2
2回答

拉风的咖菲猫

您无法理解的是,一旦进入 while 循环,while循环外的任何代码将永远不会再执行。因为没有什么改变distance&nbsp;内部while循环,它里面的代码将永远保持执行。Javascript 是单线程的,并且您的 while 循环在其中时将是在该线程上执行的唯一代码,这确实意味着distance它将永远保持进入循环时的值,因为任何可能更改的代码distance永远不会有机会被处决。您可以使用while循环,您只需要确保distance在while条件中执行计算 的代码:&nbsp;while&nbsp;(getDistance()&nbsp;<&nbsp;.05)&nbsp;{&nbsp;/*&nbsp;do&nbsp;stuff&nbsp;*/&nbsp;}(假设getDistance是一个返回当前的函数distance)。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答