3 回答
TA贡献1786条经验 获得超13个赞
您可能正在解析不是整数的内容。然后 parseInt 将不起作用并返回 NaN。如果对 NaN 求和,则它仍然是 NaN,例如:
// working testcase:
const testArray = ['2', '3', '4'];
let total = 0;
for (value of testArray) {
total += parseInt(value);
}
// returns 9
console.log(total);
// your testcase:
const testArray2 = ['2', '3', 'notANumber'];
let total2 = 0;
for (value of testArray2) {
total2 += parseInt(value);
}
// returns NaN since we are adding 2 + 3 + NaN = NaN
console.log(total2);
因此,解决方案是通过将 NaN 视为 0 来“否定”它:
// solution:
const myArray = ['2', '3', 'notANumber', '4'];
let total = 0;
for (value of myArray) {
// treat NaN, undefined or any falsey values as 0.
total += parseInt(value) || 0;
}
// returns 9
console.log(total);
要将这个概念集成到你的代码中,你会得到类似的东西:
let total = 0;
$('.input-n-pro').each(() => {
let valueInString = $(this).val();
let actualValue = parseInt(valueInString) || 0;
total += actualValue;
});
TA贡献1887条经验 获得超5个赞
如果输入值之一为空,则 parseInt 返回 NAN。因此,您可以更好地使用 IsNan 函数进行检查。如果输入为空,则赋值为 0。例如;
var x= parseInt($('#abc').val()); 如果 (isNaN(x)) x = 0;
添加回答
举报