我的全日历只列出了 3 个事件中的 1 个,我有 for 循环?

my fullcalendar only lists 1 event out of 3 that I have with for loop?

我把上下文放在一起 我有一个完整的日历,它只列出了 1 个事件,没有列出其他事件 我已经查看了代码,也许我需要一些逻辑,但我找不到正在发生的事情,然后我附上代码和解释

 /*  Initialize the calendar  */
        var ide = document.getElementsByName("id");
        var fecha = document.getElementsByName("fecha");
        var nombre = document.getElementsByName("nombre");
        var horaInicio = document.getElementsByName("horaInicio");
        var horaFin = document.getElementsByName("horaFin");
        var id="";
        var dia = "";
        var titulo = "";
        var inicio = "";
        var fin = "";

        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();
        var form = '';
        var today = new Date($.now());
        var citas=[];
       for (var x = 0; x < nombre.length; x++) {
            var defaultEvents =[{
                    id: id + ide[x].value,
                    title: titulo + nombre[x].value,
                    start: dia + fecha[x].value + 'T' + inicio + horaInicio[x].value,
                    end: dia + fecha[x].value + 'T' + fin + horaFin[x].value
                }];
                citas.push(defaultEvents);
            } 

            var $this = this; 
            for (var i=0;i<citas.length;i++){
            $this.$calendarObj = $this.$calendar.fullCalendar({
                events: citas[i]
            });
            }

一开始我收集来自我的 jsp 文件的值,我创建了一个 for 循环,我在其中创建了一个对象,在这个对象中发生了每个事件,然后我将它们添加到一个名称数组 (citas),这将是我在控制台中的结果

这是它在我的控制台上显示的内容。 在此之后我做了另一个 for 循环,它必须通过调用数组并列出每个位置来列出每个事件,结果它列出了 3 个事件中的 1 个

我可以看到两个逻辑错误:

1)

var defaultEvents =[{ ... }]

这将创建一个数组,其中包含一个对象。然后将此数组推入 citas 数组。因此,您的事件结构是一组数组(其中每个数组包含一个对象)。但是 fullCalendar 需要一个对象数组。

所以将其更改为

var defaultEvents = { ... }

相反。

2)

for (var i=0;i<citas.length;i++){
    $this.$calendarObj = $this.$calendar.fullCalendar({
        events: citas[i]
    });
}

这毫无意义。您的代码在这里说的是“循环遍历 citas 数组。对于数组中的每个项目,重新声明 $calendarObj 作为新日历,并将 citas 中的下一个数组作为事件”。

如您所见,这每次都会覆盖您的日历,因此您最终会得到一个日历,其中包含您添加到 citas 的最后一个数组条目——正如我们所见,它只包含一个事件。

如果您进行了我在第 1 点中提到的更改,那么设置您的日历以包含所有事件就变得微不足道了 - 只需将上面的代码更改为:

$this.$calendarObj = $this.$calendar.fullCalendar({
    events: citas
});