Сохраните сумму в переменной в jQuery для каждого диапазона

#javascript #jquery

Вопрос:

Я работаю над конкретным калькулятором, и мне нужно суммировать переменные в моем jQuery.каждый в диапазоне от 0 до 4 (= 5 лет).

Я нашел много страниц, где описано решение, но только со ссылками на элемент, а не на диапазон.

Мой код:

     jQuery.each(new Array(duration),
        function(n){

            var investment = 1000;    // 1000$
            var duration = 5;         // 5 years
            var revenueRatio = 10;    // 10% revenue / year
            var reinvest = 50;        // 50% reinvestment

            if(n == 0){

                var revenueReinvest = 0;
                var newInvestment = investment;

            }else{

                console.log(revenueReinvest);    // undefined
                console.log(newInvestment);      // undefined

                var interest = ( ( newInvestment - investment ) * ( revenueRatio / 100 ) );
                var removeInterest = interest * reinvest / 100;
                var restIntereset = interest - removeInterest;

                revenueReinvest  = restIntereset;
                newInvestment = newInvestment   revenueReinvest;

            }
        }
    );
 

Любая помощь или идея были бы замечательны! Спасибо!

Комментарии:

1. В чем ваша реальная проблема?

2. Если я выполняю console.log(revenueReinvest); Я не определяюсь. Я хочу подвести итог этой переменной, потому что она мне понадобится позже.

Ответ №1:

Проблема с кодом заключается в том, что вы объявили revenueReinvest и newInvestment внутри блока if и используете его внутри блока else. Это невозможно. Объявить revenueReinvest и newInvestment внешний each цикл и присвоить им значения внутри оператора if. Теперь вы можете получить доступ к назначенным значениям внутри оператора else.

Вы должны объявить переменную вне цикла, чтобы предотвратить повторное объявление переменной внутри цикла. Каждый раз, когда переменная повторно объявляется внутри цикла, старое значение будет потеряно.

Приведенный ниже код будет работать

 $(document).ready(function () {
  const duration = 4;
  // Declare here
  var revenueReinvest;
  var newInvestment;
  jQuery.each(new Array(duration),
    function (n) {
      var investment = 1000;    // 1000$
      var duration = 5;         // 5 years
      var revenueRatio = 10;    // 10% revenue / year
      var reinvest = 50;        // 50% reinvestment

      if (n == 0) {
        // assign value here
        revenueReinvest = 0;
        newInvestment = investment;
      } else {
        var interest = ((newInvestment - investment) * (revenueRatio / 100));
        var removeInterest = interest * reinvest / 100;
        var restIntereset = interest - removeInterest;

        revenueReinvest  = restIntereset;
        newInvestment = newInvestment   revenueReinvest;
      }
    }
  );
  console.log(revenueReinvest);    // will be defined
  console.log(newInvestment);      // will be defined
}); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> 

Комментарии:

1. Прежде всего: Спасибо вам! Но проблема в том, что эти переменные устанавливаются обратно в каждом цикле. Мне нужно добавить эту переменную в каждый цикл, чтобы использовать ее позже (после каждого цикла).

2. @AliElkhaiat можете ли вы проверить мой обновленный ответ? Вы должны объявить переменную вне цикла, чтобы предотвратить переназначение переменной внутри цикла.

3. Работает отлично, спасибо! Переменные должны находиться вне каждого цикла!