我有如下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>
您已经有了一些不错的答案。让我添加一些新内容:
-
您的"输入"标签未关闭。关闭:
<input type="date" id="myDate" />
-
您通过输入的"id"引用输入,但没有正确地写入其"id"。你应该写:
document.getElementById('myDate')
- 注意大写字母
-
用户应该如何在输入中提供日期?我编写了这样的代码,用户在其中使用反斜杠来分隔年份、月份和日期,因此您可以很好地构建"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>
`