我正在开发一个简单的申请表,我正在计算最多三位雇主的经验。现在我想把它们加起来。经验是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消息但是没有显示出预期的结果。请建议如何消除这两个错误。
答案 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")。值你会更清楚为什么会出现这个问题