这是我在所有文本框中添加时的代码,它工作正常但在删除数字后显示NaN
function sumVal()
{
var total = 0;
var coll = document.getElementsByTagName("input")
for ( var i = 0; i<coll.length; i++)
{
var ele = coll[i];
total += parseInt(ele.value);
}
var Display = document.getElementById("Display");
Display.innerHTML = total;
}
<input onkeyup="sumVal()" />
<input onkeyup="sumVal()" />
<input onkeyup="sumVal()" />
答案 0 :(得分:3)
在将其添加到总数之前,请尝试检查您的值是否为NaN:
total += (isNaN(parseInt(ele.value, 10)) ? 0 : parseInt(ele.value, 10));
此外,请不要忘记parseInt
的基数(如果您有小数位,请使用parseFloat
):
<强>基数强>
表示上述字符串的基数的整数。 始终指定此参数以消除读者混淆和 保证可预测的行为。产生不同的实现 未指定基数时的结果不同。
var nums = [10, "sads", 44, 16];
var numsLen = nums.length;
var total = 0;
while(numsLen--){
total += (isNaN(parseInt(nums[numsLen], 10)) ? 0 : parseInt(nums[numsLen], 10));
}
在这个example中,由于“sads”是而不是数字(NaN),我们在总数中加0。
答案 1 :(得分:2)
您应该首先确保元素的值是有效数字:
if (isNumber(ele.value))
total += parseInt(ele.value, 10);
}
你需要这个功能:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
上述功能是着名的isNumber
函数from here。
答案 2 :(得分:1)
如果它不是数字,只需添加0
:
var theInt = parseInt(ele.value, 10);
total += (isNaN(theInt)) ? 0 : theInt;