Аннуитетный калькулятор на JavaScript
Данный калькулятор Javascript позволяет рассчитать ежемесячные выплаты по кредиту. Расчеты выплат в скрипте производятся с использованием коэффициента аннуитета (или фиксированных выплат каждый месяц). Коэффициент рассчитывается по формуле а = p * (1+p)^term / ((1+p)^term-1), где: а - коэффициент аннуитета; р — сотая доля годовой процентной ставки в месяц; term — количество месяцев, на которое оформляется кредит; Используя коэффициент аннуитета, вычисляем размер ежемесячного платежа: month_p=a*sum, где sum - полная сумма кредита; вычисляем общую сумму платежей за весь период выплат: total_p=term*month_p; размер переплаты по кредиту: over_p=total_p-sum;
Создаем блоки для получения информации от пользователя и вывода результатов расчетов:
var body = document.getElementsByTagName("body")[0]; //получаем body для добавления к нему новых элементов
var cont = document.createElement("div"); //создаем контейнер div
var div_p = document.createElement("div"); //создаем div для текстовой информации;
var div_f = document.createElement("div"); //создаем div для элементов form
body.appendChild(cont); //добавляем созданные "дивы" в документ
cont.appendChild(div_p);
cont.appendChild(div_f);
Немного оформляем внешний вид с помощью css:
cont.style.width = 520;
cont.style.height = 200;
cont.style.position = 'absolute';
cont.style.border = 'outset';
div_p.style.width = '50%';
div_p.style.position = 'absolute';
div_p.style.Float = 'left';
div_p.style.marginTop = 20;
div_p.style.marginLeft = 20;
div_f.style.Float = 'right';
div_f.style.marginTop = 20;
div_f.style.marginLeft = 280;
div_f.style.width = '50%';
div_f.style.position = 'relative';
Заполняем блоки div_p и div_f содержанием:
div_p.innerHTML = "Сумма кредита:<br>Общий годовой процент по кредиту:<br>Срок кредита:<br><br><br>"+
"Ваш ежемесячный платеж:<br>Общая сумма платежей:<br>Переплата по кредиту составляет:";
div_f.innerHTML = "<form name='credit'><input name='sum' type='text' value='' size=12>"+
"<select type='menu' name='usr' id='curr'><option value='rub'> руб.<option value='USD'>долл."+
"<option value='Eur'>евро</select><br><input name='perc' type='text' value='' size=12>%<br>"+
"<input type='text' value='' name='term' size=12><select type='menu' name='ust' id='ust'>"+
"<option value='month'> мес.<option value='year'> год</select>"+
"</form><button onclick='count()' value='' style='float:left; margin-top:-10'>Считать</button><br>"+
"<form name='result' ><input name='month_p' type='text' value='' size=24 ' onfocus='this.blur()'><br>"+
"<input name='total_p' type='text' value='' size=24 onfocus='this.blur()'><br>"+
"<input name='over_p' onfocus='this.blur()'type='text' value='' size=24>";
Создаем функцию для выполнения вычислений:
function count() {
var sum = document.credit.sum.value;
var perc = document.credit.perc.value;
var i = new Array(1,12);
var term=document.credit.term.value*i[document.credit.ust.selectedIndex]; //получаем количество месяцев
var p=perc/1200;//сотая доля годового процента по кредиту
var a=p*Math.pow((1+p),term)/(Math.pow((1+p),term)-1); //высчитываем коэффициент
a=(Math.ceil(a*10000))/10000; //округляем полученное значение
var month_p = a * sum;
var total_p = term * month_p;
var over_p = total_p-sum;
var sel_val = new Array ("рублей", "долларов", "евро");
var val=sel_val[document.credit.usr.selectedIndex]; //добавляем название валюты к результату
document.result.month_p.value = (Math.round(month_p*100))/100+" "+val;
document.result.total_p.value = (Math.round(total_p*100))/100+" "+val;
document.result.over_p.value = (Math.round(over_p*100))/100+" "+val;
}
Оформление калькулятора практически отсутствует, поскольку оно должно быть выполнено в едином стиле с основным
дизайном сайта. Оформить калькулятор используя css, все необходимые id или class можно дописать в скрипт. Если что-то
не будет получаться, пишите в комментариях, постараюсь помочь.
Весь скрипт целиком:
var body = document.getElementsByTagName("body")[0];
var cont = document.createElement("div");
var div_p = document.createElement("div");
var div_f = document.createElement("div");
body.appendChild(cont);
cont.appendChild(div_p);
cont.appendChild(div_f);
cont.style.width = 520;
cont.style.height = 200;
cont.style.position = 'absolute';
cont.style.border = 'outset';
div_p.style.width = '50%';
div_p.style.position = 'absolute';
div_p.style.Float = 'left';
div_p.style.marginTop = 20;
div_p.style.marginLeft = 20;
div_f.style.Float = 'right';
div_f.style.marginTop = 20;
div_f.style.marginLeft = 280;
div_f.style.width = '50%';
div_f.style.position='relative';
div_p.innerHTML = "Сумма кредита:<br>Общий годовой процент по кредиту:<br>Срок кредита:<br><br><br>"+
"Ваш ежемесячный платеж:<br>Общая сумма платежей:<br>Переплата по кредиту составляет:";
div_f.innerHTML = "<form name='credit'><input name='sum' type='text' value='' size=12>"+
"<select type='menu' name='usr' id='curr'><option value='rub'> руб.<option value='USD'>долл."+
"<option value='Eur'>евро</select><br><input name='perc' type='text' value='' size=12>%<br>"+
"<input type='text' value='' name='term' size=12><select type='menu' name='ust' id='ust'>"+
"<option value='month'> мес.<option value='year'> год</select>"+
"</form><button onclick='count()' value='' style='float:left; margin-top:-10'>Считать</button><br>"+
"<form name='result' ><input name='month_p' type='text' value='' size=24 ' onfocus='this.blur()'><br>"+
"<input name='total_p' type='text' value='' size=24 onfocus='this.blur()'><br>"+
"<input name='over_p' onfocus='this.blur()'type='text' value='' size=24>";
function count() {
var sum = document.credit.sum.value;
var perc = document.credit.perc.value;
var i = new Array(1,12);
var term = document.credit.term.value*i[document.credit.ust.selectedIndex];
var p = perc/1200;
var a = p*Math.pow((1+p),term)/(Math.pow((1+p),term)-1); //Math.pow - возведение в степень (арг-т, степень)
a = (Math.ceil(a*10000))/10000;
var month_p = a*sum;
var total_p = term*month_p;
var over_p = total_p-sum;
var sel_val = new Array ("рублей", "долларов", "евро");
var val = sel_val[document.credit.usr.selectedIndex];
document.result.month_p.value = (Math.round(month_p*100))/100+" "+val;
document.result.total_p.value = (Math.round(total_p*100))/100+" "+val;
document.result.over_p.value = (Math.round(over_p*100))/100+" "+val;
}
Добрый день! не могли бы подсказать формулу расчета дифференцированных платежей? Заранее благодарен!