为什么while循环无限循环
Why is this while loop looping infinitely?
所以我正在为我的研究制作一个网络应用程序,它基本上使用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")
相关文章:
- 数组过滤器导致无限$digest循环
- jQuery无限垂直循环式老虎机
- Angular UI Modal导致无限摘要循环
- 在绑定到内部$http函数时运行无限摘要循环
- 在 Safari 和 Internet Explorer 中无限重载循环
- 使用Javascript SDK在Facebook应用程序上的无限登录循环
- $http调用似乎产生了无限$digest循环
- AngularJS 错误:$rootScope:infdig 无限$digest循环
- 如何重新排列此代码,以便我的 setInterval 无限停止循环
- 过滤对象数组时的无限$digest循环
- IE11-使用ui路由器的angular js中的无限$digest循环
- 使用Javascript无限while循环
- 为什么这个树的布局给了我一个无限的循环
- Qnit点击触发测试导致无限刷新循环
- 使用getterSetter从ng-model中获取无限摘要循环
- jQuery/JS无限定时循环
- 不同浏览器中的无限js循环
- javascript中的无限for..循环
- KinteticJS -销毁节点,无限while循环,因为子节点没有被删除
- 如何在不使用Break的情况下停止无限提示循环?