在Javascript中添加输入值时忽略NaN

时间:2018-01-25 16:15:39

标签: javascript html

我有以下代码:

var inputsArray = document.getElementsByTagName('input');

function computeTotal() {
  var tot = 0;
  tot += parseFloat(inputsArray[0].value);
  tot += parseFloat(inputsArray[1].value);
  tot += parseFloat(inputsArray[2].value);
  inputsArray[3].value = tot;
}
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>
<input type="text" disabled></input>
<button type="button" onclick="computeTotal()">Calculate</button>

在所有3个框中输入数字时计算正常,但我希望计算即使一个框留空,实际上返回NaN。任何想法将不胜感激!非常感谢提前!

P.S。:我知道我可以使用“for”循环和isNaN()方法跳过空白输入,但我真的在寻找一个逐个添加输入的解决方案。

编辑:我不想将NaN转换为0

3 个答案:

答案 0 :(得分:1)

You can do somethink like this for each line :

if (!isNaN(inputsArray[0].value)) {  tot += parseFloat(inputsArray[0].value);}

答案 1 :(得分:1)

在三元运算符的帮助下,您可以执行以下操作:

&#13;
&#13;
var inputsArray = document.getElementsByTagName('input');

function computeTotal(){
  var tot = 0;
  tot += (isNaN(inputsArray[0].value) || inputsArray[0].value=="") ? 0 : parseFloat(inputsArray[0].value);
  tot += (isNaN(inputsArray[1].value) || inputsArray[1].value=="") ? 0 : parseFloat(inputsArray[1].value);
  tot += (isNaN(inputsArray[2].value) || inputsArray[2].value=="") ? 0 : parseFloat(inputsArray[2].value);
  inputsArray[3].value = tot;
}
&#13;
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>
<input type="text" disabled></input>
<button type="button" onclick="computeTotal()">Calculate</button>
&#13;
&#13;
&#13;

答案 2 :(得分:-2)

将您的值乘以1以将其转换为整数

parseFloat(1*inputsArray[0].value);