我的全日历只列出了 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
});
我把上下文放在一起 我有一个完整的日历,它只列出了 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
});