jQuery sum不起作用,调用该函数时,总和变为零

时间:2018-07-03 06:16:46

标签: javascript jquery asp.net-mvc-5

我正在创建一个用于考试的小型应用程序,当我单击下一步按钮时,当前答案单选按钮值应存储在某个变量中,并且该值应添加到下一个答案值中,我使用jQuery,但是当我多次调用该函数时,我的存储值始终会重置为零,

这是我到目前为止尝试过的。 以下是我的查看页面

<div>

    <div id="questionvalue">@a.QDescription</div>
    <div>
        <div id="questionvalue">
            <input type="radio" name="test" value="@a.Choice1Percent">  @a.Choice1Desc<br>
        </div>

    </div>
    <div>
        <input type="radio" name="test" value="@a.Choice2Percent">  @a.Choice2Desc<br>

    </div>
    <div>
        <input type="radio" name="test" value="@a.Choice3Percent">  @a.Choice3Desc<br>

    </div>
    <div>
        <input type="radio" name="test" value="@a.Choice4Percent">  @a.Choice4Desc<br>

    </div>

<button type="button" id="starttestbuttonid" class="btn btn-default" onclick="StartTest()">Next</button>

以下是我尝试添加答案总和的脚本

<script>
function StartTest() {
    debugger;
    var selopt = parseFloat($('input[name=test]:checked').val());

    var optionssum=0;
    optionssum+= optionssum + selopt;

    $.ajax({
        url: $("baseUrl").html() + "Test/_QuestionView",
        type: "POST",
        data: { selectedoption: selopt},
        success: function (data) {
            debugger;

            $('#appendquestion').html(data);
          //  $('#myModal').modal(show);



        },
        error: function (data) {
            $('#loading').hide();
        }
    });
}

任何人都可以帮助您计算总和。

2 个答案:

答案 0 :(得分:1)

你不能optionssum += optionssum + selopt;,我想你是说optionssum += selopt;

当然,每次都会重置optionsum,您可以在var optionssum=0;内的StartTest()处以及每次单击被单击按钮时将其重置。

只需将您的代码更改为此,它就可以工作(将其设为全局变量)

var optionssum=0;    
function StartTest() {
    debugger;
    var selopt = parseFloat($('input[name=test]:checked').val());


    optionssum+= selopt;

    $.ajax({
        url: $("baseUrl").html() + "Test/_QuestionView",
        type: "POST",
        data: { selectedoption: selopt},
        success: function (data) {
            debugger;

            $('#appendquestion').html(data);
          //  $('#myModal').modal(show);



        },
        error: function (data) {
            $('#loading').hide();
        }
    });
}

答案 1 :(得分:0)

问题是因为您保留了var optionssum=0;

我可以建议您做以下事情

HTML     

    <div id="questionvalue">@a.QDescription</div>
    <div>
        <div id="questionvalue">
            <input type="radio" name="test" value="1">  1<br>
        </div>

    </div>
    <div>
        <input type="radio" name="test" value="2">  2<br>

    </div>
    <div>
        <input type="radio" name="test" value="3">  3<br>

    </div>
    <div>
        <input type="radio" name="test" value="4">  4<br>

    </div>

<button type="button" id="starttestbuttonid" class="btn btn-default" data-optionssum="0" >Next</button>
<br>
<b>Total : <span class="tot" >
</span>
</b>

JAVASCRIPT

$(document).ready(function(){


$("#starttestbuttonid").on("click",function(){
        var optionssum = $(this).data("optionssum");
    var selopt = parseFloat($('input[name=test]:checked').val());
        alert("+ "+selopt);

    if(!isNaN(selopt))
    optionssum+= selopt;

    /*
        Your ajax
    */

    //set latest total value
    $(this).data("optionssum",optionssum);

    // just want to show the value
    $(".tot").html(optionssum);
});

});

JSFiddle示例:https://jsfiddle.net/synz/Ltv3k0bq/