#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. Работает отлично, спасибо! Переменные должны находиться вне каждого цикла!