1 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
calendar您使用的變量引用的是calendar.addEventSource與頁(yè)面上顯示的不同的 FullCalendar 實(shí)例。您創(chuàng)建了一個(gè)全新的日歷 - 但隨后沒有將其呈現(xiàn)到頁(yè)面上。這就是為什么你不會(huì)收到錯(cuò)誤,但也沒有發(fā)生任何有用的事情。
原始?jí)Kcalendar已在您的塊內(nèi)定義并填充document.addEventListener('DOMContentLoaded', function() {,但您嘗試在塊內(nèi)創(chuàng)建一個(gè)新塊jQuery(document).ready(function($) {。您需要使用現(xiàn)有的引用calendar- 但當(dāng)然,當(dāng)您需要它時(shí)它超出了范圍,因?yàn)槟挥诓煌拇a塊中。
現(xiàn)在,document.addEventListener('DOMContentLoaded', function() {和jQuery(document).ready(function($) {本質(zhì)上是等價(jià)的,只是一個(gè)是用原生JS編寫的,一個(gè)是jQuery語(yǔ)法。它們基本上執(zhí)行相同的任務(wù) - 即延遲代碼的執(zhí)行,直到 DOM 完全加載。因此,將它們同時(shí)放在頁(yè)面中沒有多大意義或增加任何價(jià)值。只需使用一個(gè)塊來(lái)包含所有代碼,然后您就不會(huì)遇到任何范圍問題。
除此之外,出于類似的原因,document.addEventListener('DOMContentLoaded', function() { 在jQuery“就緒”塊中再有另一個(gè)也是沒有意義的!你根本不需要它。我只能假設(shè)您不理解該代碼的作用并認(rèn)為它是 fullCalendar 的一部分 - 事實(shí)并非如此。
和
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/
添加回答
舉報(bào)