Javascript中的NaN错误

时间:2014-07-20 15:23:10

标签: javascript

当我选中时,文本框中的结果是NaN。在我家里的电脑里,它会输出一个数字。请帮忙。

function ageCount() {
  var date1 = new Date();
  var dob = document.getElementById("dob").value;
  var date2 = new Date(dob);
  var pattern = /^\d{4}-\d{1,2}-\d{1,2}$/;

  if (pattern.test(dob)) {
    var y1 = date1.getFullYear();
    //getting current year            
    var y2 = date2.getFullYear();
    //getting dob year            
    var age = y1 - y2;
    //calculating age                       
    document.getElementById("ageId").value = age;
    document.getElementById("ageId").focus ();
    return true;
  } else {
    alert("Invalid date format. Please Input in (dd/mm/yyyy) format!");
    return false;
  }
}

2 个答案:

答案 0 :(得分:0)

如果您将无效的日期字符串传递给Date,则会收到无效的日期。

(new Date("9999-99-99"))

如果您在无效日期致电getFullYear,则会获得NaN

如果您尝试对NaN执行任何算术运算,则会得到Nan

所以,你的问题是你从输入框中选中了它并且它是空的,这是传递给你行中Date的内容:

var date2 = new Date(dob);

您应该改进pattern以消除任何无效日期。

答案 1 :(得分:0)

如果您确实搜索dd/mm/yyyy日期格式, 那么你的模式应该是

/^\d{1,2}\/\d{1,2}\/\d{4}$/


通知:您实际上并未计算年龄,而是计算出生年份与当前年份之间的差异。 如果一个人的生日发生在当前日期之后,则会错误一年。 您可以查看this response以获得构建此计算器的良好起点。