我正在编写一个客户端代码,其中有很多学生可以注册的事件。每个事件都有一个日期,在页面加载时我想将事件日期与当前日期进行比较,并仅显示那些尚未结束的事件(不早于今天),这些事件将显示在下拉列表中。阅读了其他答案后,这就是我写的。我无法找到其中的错误。
我的 JavaScript:
function addFormField() {
var event=[]
event[0]={name:"calendarevent1", eventdate:"October 12, 2013"}
event[1]={name:"calendarevent2", eventdate:"November 2, 2013"}
event[2]={name:"calendarevent1", eventdate:"December 20, 2014"}
var today = new Date();
event.sort();
var nextLater = null;
for (var i = 0; i < event.length; i++) {
if (event[i] > today) {
nextLater = event[i];
break;
for (i = 0; i < nextLater.length; i++) {
$("#EventList").append('<option>' + nextLater[i] + '</option>')
}
}
}
以及下拉菜单的 html:
<select id= "Somename" name="Somename" id= "EventList" style="width: 267px;">
<option value="" selected>Select One:</option>
</select>
我对 javascript 还很陌生,任何指点都将不胜感激。
最佳答案
您需要更改一些内容。 对于初学者,您需要更改在对象中放置日期的方式,因为您无法将日期与该格式进行比较。因此将它们更改为“10/12/2013”(2013 年 10 月 12 日)。
其次,您将 event[i]
与 today
进行比较,但 event[i]
是对象,因此您需要执行 事件[i].eventdate
。
function addFormField() {
var event = []
event[0] = {
name: "calendarevent1",
eventdate: "10/12/2013"
}
event[1] = {
name: "calendarevent2",
eventdate: "11/2/2013"
}
event[2] = {
name: "calendarevent1",
eventdate: "12/20/2014"
}
var today = new Date();
event.sort();
var nextLater = null;
for (var i = 0; i < event.length; i++) {
if (new Date(event[i].eventdate) > today) {
//nextLater = event[i];
//break;
//for (i = 0; i < nextLater.length; i++) {
$("#EventList").append('<option>' + event[i].name + '</option>')
//}
}
}
}
addFormField();
你的 fiddle 有一些问题。您没有添加 jQuery。您的选择框
有两个ID,删除第一个。我注释掉了一些阻止代码填充选择框的内容。最后,您需要调用该函数,否则它将不会执行任何操作。
关于javascript - 对 JavaScript 对象数组中的日期事件进行排序,并与当前日期进行比较以显示在表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539988/