Javascript计算返回NaN,当只插入前2个和

Javascript calculation returns NaN, when only first 2 sum inserted

本文关键字:插入 2个 计算 返回 NaN Javascript      更新时间:2023-09-26
function kanded_arvutus() 
  {
  var deebet1 = document.getElementById("deebet1").value;
  var kreedit1 = document.getElementById("kreedit1").value;
  var deebet2 = document.getElementById("deebet2").value;
  var kreedit2 = document.getElementById("kreedit2").value;

  var kokku_deebet = parseFloat(deebet1)+parseFloat(deebet2);
  document.getElementById("kokku_deebet").value = kokku_deebet.toFixed(2);   
  var kokku_kreedit = parseFloat(kreedit1)+parseFloat(kreedit2);
  document.getElementById("kokku_kreedit").value = kokku_kreedit.toFixed(2);     
  }

这是html

<input onClick="kanded_arvutus();" onChange="kanded_arvutus();" type="text" class="form-control" name="deebet'.$i.'" id="deebet'.$i.'"  placeholder="0" value="">             
<input value="" onClick="kanded_arvutus();" onChange="kanded_arvutus();" type="text" class="form-control" name="kreedit'.$i.'" id="kreedit'.$i.'"  placeholder="0">

<input type="text" class="form-control field" name="kokku_deebet" value="" id="kokku_deebet" placeholder="0">
<input type="text" class="form-control field" name="kokku_kreedit" value="" placeholder="0" id="kokku_kreedit">

,如果我只插入kreedit1和deebet1值,然后jquery返回NAN,但如果我插入deebet2和kreedit2也,然后工作。

有人可能会看到,这是怎么回事?

谢谢你,亲爱的。

请检查变量是否为空或未定义如下,在添加之前,

if (typeof(deebet1) != 'undefined' && deebet1 != null && typeof(deebet2) != 'undefined' && deebet2 != null)
{
    var kokku_deebet = parseFloat(deebet1)+parseFloat(deebet2);
    document.getElementById("kokku_deebet").value = kokku_deebet.toFixed(2);
}
if (typeof(kreedit1) != 'undefined' && kreedit1 != null && typeof(kreedit2) != 'undefined' && deebet2 != null)
{
    var kokku_deebet = parseFloat(kreedit1)+parseFloat(kreedit2);
    document.getElementById("kokku_kreedit").value = kokku_deebet.toFixed(2);
}

正如John建议的那样,你可以使用下面的命令,它将检查变量是否有任何实值。

if (deebet1 && deebet2)
    {
        var kokku_deebet = parseFloat(deebet1)+parseFloat(deebet2);
        document.getElementById("kokku_deebet").value = kokku_deebet.toFixed(2);
    }
    if (kreedit1 && kreedit2)
    {
        var kokku_deebet = parseFloat(kreedit1)+parseFloat(kreedit2);
        document.getElementById("kokku_kreedit").value = kokku_deebet.toFixed(2);
    }

您正在从输入值中读取一个空字符串,并试图将其解析为数字。这就是为什么它是南。您需要检查它是否为空(如果为空则设置默认值,可能为0)。

if(deebet1 != "") {
}

等等…