为了账号安全,请及时绑定邮箱和手机立即绑定

javascript简单循环计算

javascript简单循环计算

绝地无双 2021-11-18 15:44:28
function calc() {  var aa = document.getElementById("aa").value;  var bb = document.getElementById("bb").value;  var cc = document.getElementById("cc").value;  var time = 1;  var dd = document.getElementById("dd").value / 365;  first = 1 + ((bb / 100) / cc);  second = cc * time;  result = aa * Math.pow(first, second);  bb_earn = aa * Math.pow(first, second) - aa;  final = Number(aa) + Number(bb_earn);  var r = "";  var lastTotal = aa;  for (var i = 0; i < dd; i++) {    var newTotal = Number(lastTotal) + Number(bb_earn);    zz = +newTotal;    lastTotal = newTotal;    r += i + 1 + ") " + aa + "---" + zz + "---" + final + "<br/>";    r += "";  }  document.getElementById("table").innerHTML += r;}<div> A - <input type="text" id="aa" value="12000" /></div><div> B - <input type="text" id="bb" value="20" /></div><div> C - <input type="text" id="cc" value="1" /></div><div> D - <input type="text" id="dd" value="1825" /></div><div> <input type="button" value="Get" onclick="calc();" /></div><br/><br/><div id="table"></div>我试图循环默认值,默认值的 20% 和默认值的总和加上默认值的 20%。在下一行,默认值应该是前一个最终列的总和值。我尝试了上面的 javascript 计算来达到预期的结果。但是,我搞砸了..输出结果为:1) 12000---14400---144002) 12000---16800---144003) 12000---19200---144004) 12000---21600---144005) 12000---24000---14400但是,输出应该是:1) 12000---2400---144002) 14400---2880---172803) 17280---3456---207364) 20736---4147.20---24883.205) 24883.20---4976.60---29859.80
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

根据您编写的内容,很难弄清楚您要使用代码实现什么目标。如果您只想取之前的总数并每次增加 20%,则可以写得更简单。您没有解释time变量的作用以及#cc元素的作用。


无论如何,这应该输出您期望的结果。


function calc() {

  var aa = document.getElementById("aa").value;

  var bb = document.getElementById("bb").value;

  var cc = document.getElementById("cc").value;

  var dd = document.getElementById("dd").value / 365;


  var r = "";

  var lastTotal = Number(aa);

  

  for (var i = 0; i < dd; i++) {

  

    var ratio = ((bb / 100) / cc);

    var addition = lastTotal * ratio;

    var newTotal = lastTotal + addition;


    r += i + 1 + ") " + lastTotal + "---" + addition + "---" + newTotal + "<br/>";

    r += "";

    

    lastTotal = newTotal;

  }


  document.getElementById("table").innerHTML += r;

}

<div> A - <input type="text" id="aa" value="12000" /></div>

<div> B - <input type="text" id="bb" value="20" /></div>

<div> C - <input type="text" id="cc" value="1" /></div>

<div> D - <input type="text" id="dd" value="1825" /></div>

<div> <input type="button" value="Get" onclick="calc();" /></div>

<br/><br/>

<div id="table"></div>


查看完整回答
反对 回复 2021-11-18
?
BIG阳

TA贡献1859条经验 获得超6个赞

for next 循环没有任何问题但我想你的公式一切都错了。


            <!DOCTYPE HTML>


            <html>

            <head>

              <title>Untitled</title>

            </head>

            <body>

                <div> A - <input type="text" id="aa" value="12000" /></div>

                <div> B - <input type="text" id="bb" value="20" /></div>

                <div> C - <input type="text" id="cc" value="1" /></div>

                <div> D - <input type="text" id="dd" value="1825" /></div>

                <div> <input type="button" value="Get" onclick="calc();" /></div>

                <br/><br/>

                <div id="table"></div>

            <script>

            function calc(){

                  var aa = document.getElementById("aa").value*1.0;//ensure that we use numbers and not strings

                  var bb = document.getElementById("bb").value*1.0;

                  var cc = document.getElementById("cc").value*1.0;

                  var time = 1.0;

                  var dd = document.getElementById("dd").value*1 / 365;


                  first = 1 + ((bb / 100) / cc);//first = 1.2 bb 20 ,cc 1

                  second = cc * time; // 1*1=1

                  // i guess here you make a mistake or choose the wrong test datas

                  var fact=Math.pow(first, second) // fact = 1.2^1 

                  result = aa * fact; //result 14400 = 12000*1.2;


                  bb_earn = aa * fact - aa; // bb_earn = 1.2 * 12000 -12000 = .2*12000 =2400

                  final = aa + bb_earn; //final =12000 + 2400 = again 14400

                 var zz=0;

                  var r = "";

                  var lastTotal = aa;

                  for (var i = 0; i < dd; i++) {

                    // as you could see thére is by this numbers NO chance to get something like -4147.20

                    // there are NO AFTER DIGITS in this calculation

                    //based on the fact result not possible

                    var newTotal = Number(lastTotal) + Number(bb_earn);

                    zz = newTotal;

                    lastTotal = newTotal;


                    r += i + 1 + ") " + aa + "---" + zz + "---" + final + "<br/>";

                    r += "";

                  }


                  document.getElementById("table").innerHTML += r;

                }

                </script>

            </body>

            </html>


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信