1 回答
TA贡献1841条经验 获得超3个赞
calendar您使用的变量引用的是calendar.addEventSource与页面上显示的不同的 FullCalendar 实例。您创建了一个全新的日历 - 但随后没有将其呈现到页面上。这就是为什么你不会收到错误,但也没有发生任何有用的事情。
原始块calendar已在您的块内定义并填充document.addEventListener('DOMContentLoaded', function() {,但您尝试在块内创建一个新块jQuery(document).ready(function($) {。您需要使用现有的引用calendar- 但当然,当您需要它时它超出了范围,因为您位于不同的代码块中。
现在,document.addEventListener('DOMContentLoaded', function() {和jQuery(document).ready(function($) {本质上是等价的,只是一个是用原生JS编写的,一个是jQuery语法。它们基本上执行相同的任务 - 即延迟代码的执行,直到 DOM 完全加载。因此,将它们同时放在页面中没有多大意义或增加任何价值。只需使用一个块来包含所有代码,然后您就不会遇到任何范围问题。
除此之外,出于类似的原因,document.addEventListener('DOMContentLoaded', function() { 在jQuery“就绪”块中再有另一个也是没有意义的!你根本不需要它。我只能假设您不理解该代码的作用并认为它是 fullCalendar 的一部分 - 事实并非如此。
和
var i = calendar.initialEvents();
console.log(i);
没有意义。fullCalendar 中没有名为initialEvents 的方法,并且您似乎并没有尝试使用i任何方法,因此您可以删除这些行。
例如
jQuery(document).ready(function($) {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
//...etc
});
calendar.render();
$('.holiday').on('click', function() {
calendar.addEventSource({
events: [ // put the array in the `events` property
{
title: 'Test-Event',
start: '2020-11-11',
overlap: false,
display: 'background',
color: '#ff9f89'
}
]
});
});
演示: https: //jsfiddle.net/32w4kLvg/
添加回答
举报