首页 > 解决方案 > JavaScript 出生日期检查器不起作用

问题描述

不能正常工作;总是输出“16 以上”。我一直在调整 if 语句,但无法弄清楚。需要一些帮助,谢谢!

function hasDateCheck() {
  let dateSpliter = document.querySelector("#dateOfBirth").value.split("-");
  console.log(`${dateSpliter[0]} ${dateSpliter[1]} ${dateSpliter[2]}`); // YYYY MM DD

  let today = new Date();
  let dd = today.getDate();
  let mm = today.getMonth();
  mm++;
  let yyyy = today.getFullYear();

  if (yyyy - dateSpliter[0] < 16 && mm - dateSpliter[1] < 0 && dd - dateSpliter[2] < 0) {
    console.log("below 16");
  } else {
    console.log("above 16");
  }
}

document.querySelector("#submit").addEventListener("click", (e) => {
  e.preventDefault();
  hasDateCheck();
});
<input name="dateOfBirth" id="dateOfBirth" type="date" required/>
<input type="submit" id="submit" value="Submit" id="formSubmit">

标签: javascripthtml

解决方案


您的 if 条件无效,

用这个替换你的 if 条件,

if (yyyy - dateSpliter[0] <= 16 && mm - dateSpliter[1] <= 0 && dd - dateSpliter[2] <= 0) {
   console.log("below 16");
} else {
   console.log("above 16");
}

如果您想计算年龄,请参考@Aniket 答案


推荐阅读