【问题标题】:How to remove or simply substitute Nan with 0?如何删除或简单地用 0 替换 Nan?
【发布时间】:2021-02-11 01:55:35
【问题描述】:

我有 2 个输入。

当我在 n1 输入中输入 2 时,第二个输入为 4。

但如果我没有在第一个 (n1) 中添加任何内容,则第二个输入 (n2) 会显示 NaN

如何删除这个NaN

<td><input type="number" value=0 id="n1" oninput="test()"/> <br/><br/></td>

<td></td>

<td><input type="text" value=0 id="result" readonly/><br><br></td>
function test () {
  var n1 = parseFloat(document.getElementById('n1').value);

  var oper = document.getElementById('selector1').value;
  var oper2 = document.getElementById('selector2').value;

  if (oper === 'm' && oper2 === 's') {
    document.getElementById('result').value = n1 * 60;
  }
}

【问题讨论】:

  • 你应该发布test()的代码
  • 执行此操作的 javascript 代码在哪里?
  • 这能回答你的问题吗? Convert NaN to 0 in javascript
  • function test() { var n1 = parseFloat(document.getElementById('n1').value); var oper = document.getElementById('selector1').value; var oper2 = document.getElementById('selector2').value; if(oper === 'm' && oper2 === 's') { document.getElementById('result').value = n1*60; } }
  • 请帮忙

标签: javascript html


【解决方案1】:

改变这一行:

var n1 = parseFloat(document.getElementById('n1').value);

到这个:

var n1 = parseFloat(document.getElementById('n1').value) || 0;

如果您将其输入字段留空,这将为 n1 提供值 0。

【讨论】:

  • 不是值 0 可以让它什么都不显示吗?
  • 是的。将document.getElementById('result').value = n1 * 60; 更改为document.getElementById('result').value = (n1 * 60) || "";
  • 你能解释一下为什么把它放在那里有效吗? var n1 = parseFloat(document.getElementById('n1').value) || "";这是因为不工作?
  • 如果你把它放在var n1 = ... 之后,那么n1 将得到"" 的值。当您将"" 乘以 60 时,您得到 0。您需要将输入值本身设置为 ""
【解决方案2】:

如果你在 if 语句中包装你的计算,在运行之前检查 n1 是一个数字,你可以确保如果没有设置值,函数不会运行。

<td> <input type="number" value=0 id="n1" oninput="test()"/> <br/><br/> </td>

<td> </td>

<td> <input type="text" value=0 id="result"  readonly /><br><br> </td>

<script type="text/javascript">
  function test() {
    var n1 = parseFloat(document.getElementById('n1').value);
    var oper = document.getElementById('selector1').value;
    var oper2 = document.getElementById('selector2').value;
    if (oper === 'm' && oper2 === 's') {
      if (isNaN(n1) != true){
        document.getElementById('result').value = n1 * 60;
      }
    }
}
</script>

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多