if/else列出可能的日期条件永远不会成功



我有如下JavaScript代码,无法获得alert消息。可能if/else循环不起作用。我该怎么解决这个问题?

document.getElementById('mydate').onchange = function() {
  var selectedDateFromCalendar = this.value;
  var currentdate = new Date();
  var Diff = new Date(selectedDateFromCalendar) - currentdate;
  var diffDays = Math.ceil(Diff / (1000 * 3600 * 24));
  if ((selectedDateFromCalendar) - currentdate < 0) {
    alert("out of date");
  } else if ((selectedDateFromCalendar) - currentdate == 0) {
    alert("last day of the event");
  } else if ((selectedDateFromCalendar) - currentdate >= 1) {
    alert("last " + diffDays + " day");
  }
}
<input type="date" id="mydate">

这是有效的,问题是你选择了错误的id mydate而不是myDate,第二个问题是你减去了带有日期的字符串,这使得你的计算错误,@Paul在评论中也提到了这一点。

document.getElementById('myDate').onchange = function () {//changed 
    var selectedDateFromCalendar = new Date(this.value);  //changed
    var currentdate = new Date();
    var Diff = new Date(selectedDateFromCalendar) - currentdate;
    var diffDays = Math.ceil(Diff / (1000 * 3600 * 24));
    if ((selectedDateFromCalendar) - currentdate < 0) {
        alert("out of date");
    }
    else if ((selectedDateFromCalendar) - currentdate == 0) {
        alert("last day of the event");
    }
    else if ((selectedDateFromCalendar) - currentdate >= 1) {
        alert("last " + diffDays + " day");
    }
}
<input type="date" id="myDate">

这适用于

window.onload = function()
{
    document.getElementById('myDate').onchange = function () {
        var selectedDateFromCalendar = new Date(this.value);
        var currentdate = new Date();
        var Diff = new Date(selectedDateFromCalendar) - currentdate;
        var diffDays = Math.ceil(Diff / (1000 * 3600 * 24));
        if ((selectedDateFromCalendar) - currentdate < 0) {
            alert("out of date");
        }
        else if ((selectedDateFromCalendar) - currentdate == 0) {
            alert("last day of the event");
        }
        else if ((selectedDateFromCalendar) - currentdate >= 1) {
            alert("last " + diffDays + " day");
        }
    }
}

这可能有效。。。。。。。。

<!DOCTYPE html>
  <html>
    <head>
       <title>Page Title</title>
    </head>
    <body>
        <input type="date" id="myDate">
   <script>
      document.getElementById('mydate').onchange = function () {
      var selectedDateFromCalendar = this.value;
      var currentdate = new Date();
      var Diff = new Date(selectedDateFromCalendar) - currentdate;
      var diffDays = Math.ceil(Diff / (1000 * 3600 * 24));
      if (new Date(selectedDateFromCalendar) - currentdate < 0) {
          alert("out of date");
      }
      else if (new Date(selectedDateFromCalendar) - currentdate == 0) {
        alert("last day of the event");
      }
      else if (new Date(selectedDateFromCalendar) - currentdate >= 1) {
        alert("last " + diffDays + " day");
      }
  }
</script>
</body>  
</html>

您已经有了一些不错的答案。让我添加一些新内容:

  1. 您的"输入"标签未关闭。关闭:

    <input type="date" id="myDate" />

  2. 您通过输入的"id"引用输入,但没有正确地写入其"id"。你应该写:document.getElementById('myDate')

    • 注意大写字母
  3. 用户应该如何在输入中提供日期?我编写了这样的代码,用户在其中使用反斜杠来分隔年份、月份和日期,因此您可以很好地构建"selectedDateFromCalendar"对象:

    var auxlist = this.value.split("/");
    var selectedDateFromCalendar = new Date(auxlist[0],auxlist[1],auxlist[2],0,0,0,0);
    

这项工作:

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
  <input type="date" id="myDate" />
  <script>
    document.getElementById('myDate').onchange = function () {
        var auxlist = this.value.split("/");
        var selectedDateFromCalendar = new Date(auxlist[0],auxlist[1],auxlist[2],0,0,0,0);
        var currentdate = new Date();
        var Diff = new Date(selectedDateFromCalendar) - currentdate;
        var diffDays = Math.ceil(Diff / (1000 * 3600 * 24));
        console.log(selectedDateFromCalendar);
        if ((selectedDateFromCalendar) - currentdate < 0) {
            alert("out of date");
        }
        else if ((selectedDateFromCalendar) - currentdate == 0) {
            alert("last day of the event");
        }
        else if ((selectedDateFromCalendar) - currentdate >= 1) {
            alert("last " + diffDays + " day");
        }
    }
</script>
</body>  
</html>

`

最新更新