我在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);
});
我在NaN
输入字段中获得#Asc201516EleTotalBoysEnrollment
。可能是什么问题?同一功能对于同一页面上的其他组(教师总数)字段工作正常。
答案 0 :(得分: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
- 运算符。应用它两次会将任何字符串转换为整数值,因此可以被视为标准parseInt()
函数的“更宽容的兄弟”。 NaN
将显示为0
,float
值将被截断。
(对+
返回的每个字符串应用.val()
运算符,正如您所做的那样,也会尝试将字符串转换为整数,但如果字符串包含任何与整数格式结果将是NaN
并最终破坏你的求和。)