建议使用try-catch-javascript
我试图用java脚本中的try-catch验证日期输入,但是下面的代码并没有像我预期的那样工作。 我希望输入的日期不是日期时会出现错误,应该执行catch,但我得到的结果如下。看不到新的日期,也看不到我期望的结果建议使用try-catch-javascript,javascript,html,try-catch,Javascript,Html,Try Catch,我试图用java脚本中的try-catch验证日期输入,但是下面的代码并没有像我预期的那样工作。 我希望输入的日期不是日期时会出现错误,应该执行catch,但我得到的结果如下。看不到新的日期,也看不到我期望的结果 console.log("min date :") try{ minDate = new Date(elminDate.value) } catch(e){ console.log("error::") cons
console.log("min date :")
try{
minDate = new Date(elminDate.value)
}
catch(e){
console.log("error::")
console.log(err.name)
console.log("changed min")
minDate = new Date()
}
console.log(minDate)
console.log("max date :" )
try{
maxDate = new Date(elmaxDate.value)
}
catch(err){
console.log("error::")
console.log(err.name)
console.log("changed max")
maxDate = new Date()
}
console.log(maxDate)
答复:
[Log] min date : (home.html, line 93)
[Log] Tue Aug 01 2017 02:00:00 GMT+0200 (CEST) (home.html, line 103)
[Log] max date : (home.html, line 105)
[Log] Invalid Date (home.html, line 115)
Date
构造函数不会在无效日期抛出异常,而是在Date对象中生成一个NaN值。您可以进行以下测试:
console.log("date :");
date = new Date(elDate.value);
if (isNaN(date)) {
console.log("error: Invalid Date");
console.log("changed date to now");
date = new Date();
}
console.log(date)
你确定构造函数抛出的日期吗?当我将它与无效数据一起使用时,我只会得到一个
日期
,当转换为字符串时,它会显示无效日期
。也看到是的,我得到了无效的日期,所以它只是一个字符串?我在等待一个错误,但正如你所说,它不会抛出错误。看,只有无效日期的一些方法可能抛出错误,构造函数不会根据我所读的内容抛出错误。这意味着它是一个无效的Date
对象,不会抛出任何异常。再次,请参阅以检测无效日期。这很完美,感谢您的帮助,我正在使用tostring方法,如果是,请将其与无效日期进行比较并更改日期。这就是我要找的,谢谢