jQuery年份计算

时间:2019-06-03 06:45:09

标签: javascript jquery

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年)。

1 个答案:

答案 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);
  }
}