0

我正在编写一个客户端代码,我们有很多学生可以注册的活动。每个事件都有一个日期,在页面加载时我想将事件日期与当前日期进行比较,并仅显示那些尚未结束的事件(不早于今天),这些事件将显示在下拉列表中。阅读其他答案后,这是我写的。我无法在此找到错误。

我的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相当陌生,任何指针都将受到高度赞赏。

4

2 回答 2

2

你需要改变一些事情。对于初学者,您需要更改将日期放入对象的方式,因为您无法将日期与该格式进行比较。所以将它们更改为“10/12/2013”​​(2013 年 10 月 12 日)。

其次,你比较event[i]today,但是event[i]是你需要做的对象event[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();

你的小提琴有一些问题。你没有添加 jQuery。你selectbox有两个 id 删除第一个。我注释掉了一些阻止代码填充选择框的事情。最后,您需要调用该函数,否则它不会做任何事情。

http://jsfiddle.net/7G9e5/1/

于 2013-08-30T19:19:10.707 回答
1

如果那是您格式化日期的方式,那很好,但您必须执行以下操作:

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"};

    event.sort(function(a, b) {
          if (new Date(a.eventDate) > new Date(b.eventDate) return 1;
          if (new Date(a.eventDate < new Date(b.eventDate) return -1;
          return 0;
    });

    var today = new Date();

    for (var i = 0; i < event.length; i++) {
        if (new Date(event[i].eventdate) > today) {
            $("#EventList").append('<option>' + event[i].name + '</option>')               
        }
    }
}
于 2013-08-30T19:41:10.157 回答