function compute() {
if ($('input[name=type]:checked').val() != undefined) {
var a = parseInt($('input[name=LeaseCostYear1]').val());
var b = parseInt($('input[name=LeaseCostYear2]').val());
var c = parseInt($('input[name=LeaseCostYear3]').val());
var d = parseInt($('input[name=LeaseCostYear4]').val());
var e = parseInt($('input[name=LeaseCostYear5]').val());
var total = a + b+c+d+e;
$('#txBxLeaseNpvTotal').val(a + b + c + d + e);
}
}
<div class="form-content">
<button type="button" class="accordion">@ResourceStrings.Text_BuyVersusLease</button>
<div class="accordion-panel">
<table class="form-detail-table">
<colgroup>
<col style="width:28%">
<col style="width:12%">
<col style="width:12%">
<col style="width:12%">
<col style="width:12%">
<col style="width:12%">
<col style="width:12%">
</colgroup>
<tr>
<td />
<td class="form-label">@ResourceStrings.Text_Year1</td>
<td class="form-label">@ResourceStrings.Text_Year2</td>
<td class="form-label">@ResourceStrings.Text_Year3</td>
<td class="form-label">@ResourceStrings.Text_Year4</td>
<td class="form-label">@ResourceStrings.Text_Year5</td>
<td />
</tr>
<tr>
<td class="form-label">@ResourceStrings.Text_CostToLease</td>
<td>@Html.EditorFor(model => model.LeaseCostYear1)</td>
<td>@Html.EditorFor(model => model.LeaseCostYear2)</td>
<td>@Html.EditorFor(model => model.LeaseCostYear3)</td>
<td>@Html.EditorFor(model => model.LeaseCostYear4)</td>
<td>@Html.EditorFor(model => model.LeaseCostYear5)</td>
<td />
</tr>
<tr>
<td class="form-label">@ResourceStrings.Text_NpvLease</td>
<td>@Html.TextBoxFor(model => model.LeaseNpvTotal, new { id = "txBxLeaseNpvTotal" })</td>
<td colspan="5" />
</tr>
</table>
</div>
</div>
我正在尝试使用javascript或jquery进行以下计算...我正在尝试添加所有年份并显示总计,然后再乘以NPV @ 8%-租赁。
第1年+ NPV(0.08,第2 + 0年,第3 + 0年,第4 + 0年,第5 + 0年)。
答案 0 :(得分:1)
我建议您在输入中添加一个特定的类,这样就可以通过一次选择来选择所有输入,然后可以对其进行迭代。
第二个建议是始终为parseInt
函数提供第二个参数,该参数为基数-您希望将字符串解析为的基数。在大多数情况下,基数都是10。就像const myInt = parseInt(someStringValue, 10);
那样,否则在某些情况下,您可能会得到意想不到的结果。
如果您无法添加课程,则可以使用input[name^="LeaseCostYear"]
选择器选择名称以“ LeaseCostYear”开头的所有输入。
function compute() {
if ($('input[name=type]:checked').val() != undefined) {
const total = Array.from(document.querySelectorAll('input[name^="LeaseCostYear"]'))
.reduce((acc, el) => acc + parseInt($(el).val(), 10), 0);
$('#txBxLeaseNpvTotal').val(total);
}
}