我正在尝试构建一个简单的Future Value计算器。
在第一次单击提交按钮时,一切都运行正常,但如果我必须更改其中一个值并重新计算,则fv函数不起作用。因此,如果我必须重新计算值,我必须一次又一次刷新页面。
$(document).ready(function() {
$('#submit').click(function() {
var rate = $('#rate').val();
var nper = $('#nper').val();
var pmt = $('#pmt').val();
var pv = $('#pv').val();
fv(rate, nper, pmt, pv);
fv = fv.toFixed(0);
$('#fv').attr('value', fv);
});
});
function fv(rate, nper, pmt, pv) {
fv_pv = pv * (Math.pow((1 + (rate / 100)), nper));
fv_annuity = pmt * (((Math.pow((1 + (rate / 100)), nper)) - 1) / (rate / 100));
fv = fv_pv + fv_annuity;
return fv;
};
答案 0 :(得分:0)
使用.val()。
.attr(...)仅在开始时获取对象值(创建html时)。 val()获取对象的属性值,该值可以多次改变。
var result = null;
$('#submit').click(function() {
var rate = $('#rate').val();
var nper = $('#nper').val();
var pmt = $('#pmt').val();
var pv = $('#pv').val();
fv(rate, nper, pmt, pv);
result = parseFloat(result).toFixed(0);
$('#fv').val(result);
});
function fv(rate, nper, pmt, pv) {
var fv_pv = pv * (Math.pow((1 + (rate / 100)), nper));
var fv_annuity = pmt * (((Math.pow((1 + (rate / 100)), nper)) - 1) / (rate / 100));
result = fv_pv + fv_annuity;
};
演示:
答案 1 :(得分:0)
您正在使用fv = fv.toFixed(0);
覆盖函数fv声明所以' fv'在第一次提交后不再是一个功能。
更改
fv = fv.toFixed(0);
到
var fvalue = fv.toFixed(0);
在fv函数中也许会发生同样的情况。确保始终使用' var'对于局部变量。
$(document).ready(function() {
$('#submit').click(function() {
var rate = $('#rate').val();
var nper = $('#nper').val();
var pmt = $('#pmt').val();
var pv = $('#pv').val();
fv(rate, nper, pmt, pv);
var fval = fv.toFixed(0);
$('#fv').val(fval);
});
});
function fv(rate, nper, pmt, pv) {
var fv_pv = pv * (Math.pow((1 + (rate / 100)), nper));
var fv_annuity = pmt * (((Math.pow((1 + (rate / 100)), nper)) - 1) / (rate / 100));
var fval = fv_pv + fv_annuity; //you can also just return this immediatly
return fval;
};