在添加多个文本字段时在javascript中获取NaN消息

时间:2015-03-01 11:59:03

标签: javascript

我正在开发一个简单的申请表,我正在计算最多三位雇主的经验。现在我想把它们加起来。经验是X年Y个月和Z天的形式。我写了以下javascript函数 -

function total(){
    var td;
    var fd=parseInt(document.getElementById("LoS_days1").value);
    var sd=parseInt(document.getElementById("LoS_days2").value);
    var ld=parseInt(document.getElementById("LoS_days3").value);
    var tm;
    var fm=parseInt(document.getElementById("LoS_months1").value);
    var sm=parseInt(document.getElementById("LoS_months2").value);
    var lm=parseInt(document.getElementById("LoS_months3").value);
    var ty;
    var fy=parseInt(document.getElementById("LoS_year1").value);
    var sy=parseInt(document.getElementById("LoS_year2").value);
    var ly=parseInt(document.getElementById("LoS_year3").value);
    td = (fd +sd +ld);
    var rd = td%30;
    var cm = Math.floor(td/30);
    document.getElementById("Totalexp_day").value=rd;   
    tm = (cm + fm +sm +lm);
    var rm = tm%12;
    var cy = Math.floor(ty/12);
    document.getElementById("Totalexp_month").value=rm;
    ty = (cy + fy +sy +ly);
    document.getElementById("Totalexp_year").value=ty;
    }

我在每个Totalexp_day,Totalexp_month和Totalexp_day字段中收到一条NaN消息。之前我有一些修改过的代码没有显示NaN消息但是没有显示出预期的结果。请建议如何消除这两个错误。

2 个答案:

答案 0 :(得分:0)

parseInt(document.getElementById("LoS_days1").value)

如果字符串的第一个字符无法转换为数字parseInt will return NaN

为了避免这种情况,你可以这样建议here

parseInt(document.getElementById("LoS_days1").value) || 0

答案 1 :(得分:0)

如果document.getElementById(" Totalexp_day")。值为空,那么它也将返回NaN。确保你有一些号码。

第二种方法是阅读document.getElementById(" Totalexp_day")。innerHTML然后应用parseInt

可能你警告或控制台记录document.getElementById(" Totalexp_day")。值你会更清楚为什么会出现这个问题