<html>
<head>
<script lang="Javascript">
function validateExpDate(){
var expdate ="24-10-2018";
var fields = expdate.split('-');
var date = parseInt(fields[0]);
var month = parseInt(fields[1]);
var year = parseInt(fields[2]);
var today = new Date();
var dd = parseInt(today.getDate());
var mm = parseInt(today.getMonth()+1); //January is 0!
var yyyy = parseInt(today.getFullYear());
if(year >= yyyy){
if(month >= mm){
if(date > dd){
alert('Valid Expiry Date');
}
}
}else{
alert('Invalid Expiry Date Entered!');
}
}
</script>
</head>
<body onload="validateExpDate();">
</body>
</html>
我想将变量expdate中的日期与当前日期进行比较,并显示适当的消息。谁能找出问题并使其解决?
答案 0 :(得分:0)
您的else
指令属于外部if
语句。在您的情况下,if
语句返回true
(2018> = 2018),因此程序将跳转到第一个if子句中的代码。从那时起,该程序将不再可以访问您的else
语句。
您正在寻找这样的东西:
<html>
<head>
<script lang="Javascript">
function validateExpDate(){
var expdate ="24-10-2018";
var fields = expdate.split('-');
var date = parseInt(fields[0]);
var month = parseInt(fields[1]);
var year = parseInt(fields[2]);
var today = new Date();
var dd = parseInt(today.getDate());
var mm = parseInt(today.getMonth()+1); //January is 0!
var yyyy = parseInt(today.getFullYear());
if(year >= yyyy && month >= mm && date > dd)
{
alert('Valid Expiry Date');
}
else{
alert('Invalid Expiry Date Entered!');
}
}
</script>
</head>
<body onload="validateExpDate()">
</body>
</html>
所有条件都放在一个if子句中。通过使用AND运算符,该语句仅在所有条件为true时才返回true。如果其中之一为假,程序将进入else子句。
还可以直接在javascript中比较两个日期。 只需少一点代码...
<html>
<head>
<script lang="Javascript">
function validateExpDate(){
var expdate = new Date('2018-10-24');
var today = new Date();
if(expdate > today) {
alert('Valid Expiry Date');
}
else {
alert('Invalid Expiry Date Entered!');
}
}
</script>
</head>
<body onload="validateExpDate()">
</body>
</html>
答案 1 :(得分:0)
您没有处理日期和月份的else
条件。您可以按照下面的方式编写代码,也可以根据需要在第一个&&
循环中使用IF
。
if (year >= yyyy) {
if (month >= mm) {
if (date > dd) {
alert('Valid Expiry Date');
} else {
alert('Invalid Expiry Date Entered!');
}
}
else {
alert('Invalid Expiry Date Entered!');
}
} else {
alert('Invalid Expiry Date Entered!');
}
答案 2 :(得分:0)
谢谢大家。我发现问题只是花括号。感谢您的回复。真的很感激。