Javascript循环计算

时间:2016-04-23 23:36:48

标签: javascript loops

使用以下脚本

    
var lvl = 0;
var HappB = 5;
var DecoX = 5;
var DecoY = 5;

while (lvl < 5) {
  document.ofrm.UpgSD.value += Math.ceil((Math.exp((HappB + lvl) / ((DecoX * DecoY) * 1.8))) * 1 * 130000 * (Math.tanh((lvl + 1) / 20)) * (Math.tanh((lvl + 1) / 20)));
  lvl++;
}
<form name="ofrm">
  <input type="text" name="UpgSD" size="50" tabindex="1">
</form>

结果是

  

363147633676050952513778

预期输出

  

363 + 1476 + 3367 + 6050 + 9525 + 13778 = 34559

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是一个更新的代码。 1.你的循环条件需要纠正。 2.value是字符串。您可以设置为变量然后附加它。

&#13;
&#13;
var lvl = 0;
var HappB = 5;
var DecoX = 5;
var DecoY = 5;
var number = 0;


while (lvl <= 5) {
  number += Math.ceil((Math.exp((HappB + lvl) / ((DecoX * DecoY) * 1.8))) * 1 * 130000 * (Math.tanh((lvl + 1) / 20)) * (Math.tanh((lvl + 1) / 20)));
  lvl++;
}
 document.ofrm.UpgSD.value = number;
&#13;
<form name="ofrm">
  <input type="text" name="UpgSD" size="50" tabindex="1">
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

看起来document.ofrm.UpgSD.value被强制转换为字符串(而不是数字)。

var lvl = 0;
var HappB = 5;
var DecoX = 5;
var DecoY = 5;
var initialValue = parseInt(document.ofrm.UpgSD.value);

while (lvl < 5) {
  initialValue += Math.ceil((Math.exp((HappB + lvl) / ((DecoX * DecoY) * 1.8))) * 1 * 130000 * (Math.tanh((lvl + 1) / 20)) * (Math.tanh((lvl + 1) / 20)));
  lvl++;
}

document.ofrm.UpgSD.value = initialValue;