【问题标题】:Sum of input fields into #total readonly field#total 只读字段中输入字段的总和
【发布时间】:2016-02-20 21:30:03
【问题描述】:

我在keyup 上有一个 jquery 函数,它计算不同班级的男生入学人数(使用字段),并将总和放入男生入学总数字段中。

$("#Asc201516EleClassEceBoysEnrollment").keyup(function(){
            var sum = 0;

            ece    = +$("#Asc201516EleClassEceBoysEnrollment").val();               
            katchi = +$("#Asc201516EleClassKatchiBoysEnrollment").val();
            one    = +$("#Asc201516EleClassEceOneEnrollment").val();
            two    = +$("#Asc201516EleClassEceTwoEnrollment").val();
            three  = +$("#Asc201516EleClassThreeBoysEnrollment").val();
            four   = +$("#Asc201516EleClassFourBoysEnrollment").val();
            five   = +$("#Asc201516EleClassFiveBoysEnrollment").val();
            six    = +$("#Asc201516EleClassSixBoysEnrollment").val();
            seven  = +$("#Asc201516EleClassSevenBoysEnrollment").val();
            eight  = +$("#Asc201516EleClassEightBoysEnrollment").val();
            nine   = +$("#Asc201516EleClassNineBoysEnrollment").val();
            ten    = +$("#Asc201516EleClassTenBoysEnrollment").val();

            sum =  sum + parseInt(ece+katchi+one+two+three+four+five+six+seven+eight+nine+ten);             
            console.log(sum);

            $("#Asc201516EleTotalBoysEnrollment").val(sum);

        });

我在#Asc201516EleTotalBoysEnrollment 输入字段中得到NaN。可能是什么问题?对于同一页面上的其他字段组(教师总数),相同的功能也可以正常工作。

【问题讨论】:

  • 其中一个变量可能不是数字,因此您会收到 Not A Number 错误。
  • 返回的其中一个值不是数字,您必须逐个检查才能确定是哪一个,我们无法为您完成
  • @adeneo 谢谢兄弟,你是对的。我有一个 = +$("#Asc201516EleClassEceOneEnrollment").val();和两个 = +$("#Asc201516EleClassEceTwoEnrollment").val();而不是 Asc201516EleClassOneBoysEnrollment 和 Asc201516EleClassTwoBoysEnrollment

标签: jquery


【解决方案1】:

如果您不需要将各个计数保留在其全局变量中,如您的示例所示(您是否在任何地方使用 var ... 声明了这些变量?!?)那么您可以用这个来做整个事情更短的功能:

$("#Asc201516EleClassEceBoysEnrollment").keyup(function(){
  var sum=0
  ['ece','katchi','one','two','three','four','five','six','seven','eight','nine','ten'].forEach(function(el){
      sum += ~~$("#Asc201516EleClass"+el+"BoysEnrollment").val();
  })
  console.log(sum);
  $("#Asc201516EleTotalBoysEnrollment").val(sum);
});

在 JavaScript 中,~ 是按位的 NOT 运算符。应用它两次会将 any 字符串转换为整数值,因此可以被视为标准 parseInt() 函数的“更宽容的兄弟”。 NaN 将显示为 0float 值将被截断。

( 对.val() 返回的每个字符串应用+ 运算符,正如您所做的那样,还将尝试将字符串转换为整数,但如果字符串包含与整数格式不兼容的任何字符,则结果将是NaN 并最终破坏你的总结。)

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2018-12-19
    • 2013-05-16
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多