JavaScript的运行总加法错误地(javascript running total addin

2019-10-30 17:44发布

大家好,我试图做使用JavaScript找到一个运行总一个很简单的计算。 我似乎失去了一些东西。 我也期待通过SO和发现了一些非常相似的情况,但我似乎无法与我自己的代码。

下面是我使用的calc下我跑步总脚本。

    var total = 0;

    function GetTotal(txtBox) {
        total += parseInt(txtBox.value) || 0;
        $("#chkTotal").html(total);
    }

这里是从我的观点一些代码:

 <div class="editor-field">
        @Html.TextBox("FirstDemo", String.Empty, new { id = "firstdemo", onchange =     "GetTotal(this)" })
        @Html.ValidationMessageFor(model => model.FirstDemo)
    </div>


<div>
        <h3>Total Checked</h3>
    </div>
    <div id="chkTotal"></div>

总的计算完美,直到一个值在文本框中改变,在这种情况下,任何已在文本框中输入了再次添加到正在运行的总。

谁能帮我?

Answer 1:

问题是您在全球范围total变量:我想你必须在你设置它们来处理表单多个文本字段onchage事件相同的方式。 你输入一些第一次,值正确添加到总,但你改变的时刻在任何文本字段的东西,它再次增加了新的价值。 同样,因为total有全局范围。

你真的应该移动total在函数内部本地和你有兴趣在投入要素重新解析所有值。

由于您使用jQuery,你可以做这样的事情,而不是:

function GetTotal(txtBox) {
    var total = 0;
    $('input:text').each(function(index, value) {
        total += parseInt($(value).val() || 0);
    });

    $("#chkTotal").html(total);
}​

这里有一个的jsfiddle展示给你。



Answer 2:

最简单的解决方案,遍历所有形式的元素和重做计算。

我看到的jQuery在你的代码,所以这是一个基本的选择是获取要素和每个循环。

function GetTotal(txtBox) {
    var total = 0;
    $(".calculationClass").each(
        function() {
            total += parseInt(this.value,10) || 0;
        }
    );
    $("#chkTotal").html(total);
}


文章来源: javascript running total adding incorrectly