JavaScript для цикла внутри для расчета цикла - PullRequest
0 голосов
/ 23 февраля 2019

JsFiddle

function myFunction() {
  diff = 4;
  var l = 12;

  b = document.getElementById("yee").value;

  var a = Number(document.getElementById("base").value);
  var aa = (a*b)/100;
  z = aa;
  var r = "";
  for (var i = 0; i < diff; i++) {
    if(i) {
      var hk = (aa * document.getElementById("per").value) / 100;
      aa+= Number(hk);
    }

    for (var j = 0; j < l; j++) {
      var d = ((z*j)*5)/12/100;
      r += j+1 +") " + aa.toFixed(2) + "---" + d.toFixed(2) + "<br/>";
    }

    r += "";
  }
  document.getElementById("demo").innerHTML += r;
}

Здесь я пытаюсь вычислить базовый процент (12) от базового количества (10000) за первые 12 месяцев.Окончательный результат за 12 месяцев - 1200.

После 12 отсчетов (месяцев) весь процент (10) будет добавлен к базовому количеству (10000), а затем в следующие 12 месяцев рассчитать базовый процент (12) от предыдущего базового количества.(11 000).Окончательный результат за вторые 12 месяцев - 1320.

После 12 отсчетов (месяцев) весь процент (10) будет добавлен к предыдущему базовому количеству (11000), а затем в следующие 12 месяцев рассчитать базовый процент (12) от предыдущегобазовое количество (12100).Окончательный результат за третий 12 месяцев - 1452.

Пока пробовал,

enter image description here

Результат, которого я ожидаю,

enter image description here

Наконец, я получил результат для 2-го столбца, как и ожидалось.Но я не получил результат 1-й и 3-й колонки, как я ожидал.Я хочу рассчитать эту формулу (((z * j) * 5) / 12/100) для l * diff, что означает 12 * 4 для 48 отсчетов.Но он сбрасывается каждые 12 отсчетов.Как рассчитать первый и третий столбец непрерывно?

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

инициализируйте другую переменную k, потому что каждый раз, когда цикл запускается, он начинается с 0, и вы используете j.

function myFunction() {
  diff = 4;
  var l = 12;

  b = document.getElementById("yee").value;

  var a = Number(document.getElementById("base").value);
  var aa = (a * b) / 100;
  z = aa;
  var r = "";
  k = 0;
  m = 0;
  e = 0;
  z = 0;
  for (var i = 0; i < diff; i++) {
    if (i) {
      var hk = (aa * document.getElementById("per").value) / 100;
      aa += Number(hk);

    }
    n = m;

    for (var j = 0; j < l; j++) {

      var d = ((aa * n) * 5) / 12 / 100;
      var f  = d+z;

      r += k + 1 + ") " + aa.toFixed(2) + "---" + f.toFixed(2) + "<br/>";
      k++;
      n++;
    }
    r += "";
    m++;
    z = z + d;

  }
  document.getElementById("demo").innerHTML += r;
}
<div>
  <span>Base Quantity</span>
  <input type="text" id="base" value="10000" />
</div>
<div>
  <span>Base Percent</span>
  <input type="text" id="yee" value="12" />
</div>
<div>
  <span>Whole Percent</span>
  <input type="text" id="per" value="10" />
</div>

<button onclick="myFunction()">Click</button>

<p id="demo"></p>
0 голосов
/ 24 февраля 2019
        function myFunction() {
        let diff = 4;
        let l = 12;
        let basePercent = document.getElementById("yee").value;                
        let baseQuantity = Number(document.getElementById("base").value);
        let wholePercent = document.getElementById("per").value;
        let aa = (baseQuantity * basePercent) / 100;
        let d = 0;
        let z = 0;
        let r = "";
        let monthCounter = 1;

        for (let i = 0; i < diff; i++) {
            if(i) {
                let hk = (aa * wholePercent) / 100;
                aa += Number(hk);
            }

            /*d is a constant value you keep adding every month. you need to calculate it in the outer loop and
            add it to it self in every iteration of inner loop*/
            if( i === 0) {
                d = ((aa)*5)/12/100;
            } else {
                d = ((aa*i)*5)/12/100;
            }

            for (let j = 0; j < l; j++) {
                if(i ===0 && j === 0){
                    z = 0;
                } else {
                    z += d;
                }
                r += monthCounter +") " + aa.toFixed(2) + "---" + z.toFixed(2) + "<br/>";
                ++monthCounter;
            }
            r += "";
        }
        document.getElementById("demo").innerHTML += r;
    }   
0 голосов
/ 23 февраля 2019

Вам необходимо создать переменные для хранения числа завершенных циклов.Один установит первый столбец, а второй - третий столбец.Обновите обе переменные в конце внутреннего цикла.

for (var j = 0; j < l; j++) {
  var d = (((z*j)*5)/12/100) + offset;
  r += (j+1 + (offset2*l)) +") " + aa.toFixed(2) + "---" + d.toFixed(2) + "<br/>";
}
offset2++;
offset += (((z*(j-1))*5)/12/100) + (((z*(0))*5)/12/100) + 0.5

JS Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...