Немного неясно, что здесь происходит. В показанном вами коде events: [ ... ]
ничего не сделает. Предполагается, что это опция, которую вы даете fullCalendar при создании календаря. Где твой код для создания календаря?
А строка var str =...
- это своего рода шоу ужасов. Это похоже на искаженную попытку создать JSON. Но а) это ужасный способ создания JSON - JSON.stringify
существует по уважительной причине. И б) fullCalendar в любом случае не нужен JSON, ему нужен фактический массив объектов JS, который вы не создали.
(NB. Вы можете подключить его к API, который возвращает строку JSON, и fullCalendar загрузит JSON , а затем проанализирует его в массив , но если вы передаете данные черезкод, тогда вы должны предоставить массив напрямую.)
То, что я думаю вы, вероятно, пытаетесь сделать, что-то вроде этого:
document.addEventListener("DOMContentLoaded", function() {
var getDates = function(startDate, endDate) {
var dates = [],
currentDate = startDate,
addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};
while (currentDate <= endDate) {
dates.push(currentDate);
currentDate = addDays.call(currentDate, 1);
}
return dates;
};
var dates = getDates(new Date("2019-11-01"), new Date("2019-11-02"));
var eventList = [];
dates.forEach(function(date) {
eventList.push({
title: "Max",
start: date,
color: "#ff7d7d"
});
});
var calendarEl = document.getElementById("calendar");
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ["interaction", "dayGrid", "timeGrid"],
header: {
left: "prev,next today",
center: "title",
right: "dayGridMonth,timeGridWeek,timeGridDay"
},
events: eventList
});
calendar.render();
});
Это создаетпустой массив с именем eventsList
, а затем в цикле dates.ForEach
создает объект для каждой даты и добавляет его в список событий. Этот список затем присваивается как свойство «events» в параметрах fullCalendar.
Демонстрация в реальном времени: https://codepen.io/ADyson82/pen/vYYrLva
PS Сказав все это, похоже, что вы пытаетесьсоздать последовательность идентичных событий для ряда дат. Возможно, стоит отметить, что начиная с версии 4, fullCalendar теперь поддерживает повторяющиеся события , что может сделать ваш цикл избыточным.
Вы можете реализовать то же самое, что и код выше, намного проще, используя повторяющиесяСобытия следующие:
document.addEventListener("DOMContentLoaded", function() {
var calendarEl = document.getElementById("calendar");
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: ["interaction", "dayGrid", "timeGrid"],
header: {
left: "prev,next today",
center: "title",
right: "dayGridMonth,timeGridWeek,timeGridDay"
},
events: [{
title: "Max",
color: "#ff7d7d",
startRecur: new Date("2019-11-01"),
endRecur: new Date("2019-11-03") //03 because recurrence end dates are exclusive, as per docs
}]
});
calendar.render();
});
Демонстрация: https://codepen.io/ADyson82/pen/oNNyYaV