为什么while循环无限循环

Why is this while loop looping infinitely?

本文关键字:无限循环 循环 while 为什么      更新时间:2024-01-29

所以我正在为我的研究制作一个网络应用程序,它基本上使用Twitter的流媒体api和谷歌地图的组合来显示Lat-Lng值。

Y是一个元素,表示已接收的推文数量(检查数组的长度),X是另一个元素的文本内容每秒增加1。

  • 我只是放了一些随机值作为时间,我会使用一个更合乎逻辑的刻度(每60秒左右)

我想每分钟都记录这些信息,制作一张图,但不知怎么的,我已经做了一个无限循环,我不太确定如何做。

这是代码:

function saveinfo(){
var x = document.getElementsByClassName('timer')[0].textContent;
var y = document.getElementsByClassName('counter')[0].textContent;
while (x != "510"){
    if(x = "5"){
        console.log(y);
    }
    else if (x = "200") {
        console.log(y);
    }
    else if (x = "300"){
        console.log(y);
    }
    else if (x = "400"){
        console.log(y);
    }
    else if (x = "500"){
        console.log(y);
        x = "510"
    }
}
};

当评估if语句时,您正在设置x:

if(x = "5"){

这意味着x永远不会等于"510",并且循环将永远继续。

要解决此问题,您应该执行类似if(x === '5') 的操作

三个主要原因:

  • x是一个局部变量,而不是对元素中内容的引用。当内容发生变化时,x中的值保持不变
  • =是赋值运算符,而不是比较运算符。您需要使用==(或更好的===)进行比较。由于x = "5"的计算结果为true,因此您永远无法通过第一个if
  • 您的循环无论如何都会阻止UI更新,因为JavaScript在默认情况下是单线程的。即使一直读取计时器中的值,而不是读取本地值,它仍然不会改变

if/else语句不起作用
您输入了if(x = "200")而不是if( x == "200")
在if/else语句中,if(x=1)不起作用
if(x==1)if(x=="1")始终有效
if(x==="1")仅在x是表示"1"的字符串时有效
if(x===1)仅在x为数字时有效。

您所需要做的就是将if(x="number")更改为if(x=="number")