为什么这段代码会产生无限循环?

时间:2016-08-27 23:00:01

标签: javascript html

我有一个JavaScript问题。我有一个按下按钮时运行的函数,变量通过JavaScript更改。函数中的所有内容都可以正常运行但最后一部分:

else if (upgrade == "upgMiner4") {
var cost="500";
var qty="1";
var readCash=parseInt(document.getElementById("cash").innerHTML);
while (readCash >= cost) {
document.getElementById("cash").innerHTML += "-"+cost;
document.getElementById("cash").innerHTML = eval(document.getElementById("cash").innerHTML);
document.getElementById("gpt").innerHTML += "+"+qty;
document.getElementById("gpt").innerHTML = eval(document.getElementById("gpt").innerHTML);
}
}

当我运行此代码时,它会冻结并创建一个无限循环。我没有在这里看到问题,所以我想知道你们是否可以帮助我,谢谢!

-Zachucks

3 个答案:

答案 0 :(得分:3)

while循环中的代码不会更新readCashcost,因此如果条件(readCash >= cost)为真,则永远不会更改,并且while循环将永远不会退出。

我应该补充一点,读者无法分辨出逃避者正在评估的内容 - 因此很难确定发生了什么。但是,请注意您只分配了readCashcost一次,而且您再也不会这样做了。那为什么会改变呢?

答案 1 :(得分:0)

因为您只设置了一次readCash值,并且不与您的div一起使用innerHTML更新它。这就是你的循环没有结束的原因。

工作代码:

while (readCash >= cost) {
document.getElementById("cash").innerHTML += "-"+cost;
document.getElementById("cash").innerHTML = eval(document.getElementById("cash").innerHTML);
document.getElementById("gpt").innerHTML += "+"+qty;
document.getElementById("gpt").innerHTML = eval(document.getElementById("gpt").innerHTML);
readCash = document.getElementById("cash").innerHTML;
}

答案 2 :(得分:0)

readCash cost 变量在最后 while 循环中都没有变化。这就是你面对循环的原因。可能您必须使用您缺失的逻辑递增/递减 readCash cost 变量。或者您可能实际上不需要 while 语句,只需 if