Javascript 函数中的fullcalendar-4

Javascript 函数中的fullcalendar-4,javascript,html,fullcalendar,fullcalendar-4,Javascript,Html,Fullcalendar,Fullcalendar 4,在函数中调用时,fullcalendar 4.3.1不会初始化 html示例完美地展示了日历,但当我将代码放入函数并从调用函数时,它不再显示日历 我已经粘贴了我尝试过的节略的selectable.html <!DOCTYPE html> <html> <head> <meta charset='utf-8' /> <link href='../packages/core/main.css' rel='stylesheet' /> <

在函数中调用时,fullcalendar 4.3.1不会初始化

html示例完美地展示了日历,但当我将代码放入函数并从调用函数时,它不再显示日历

我已经粘贴了我尝试过的节略的selectable.html

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link href='../packages/core/main.css' rel='stylesheet' />
<link href='../packages/daygrid/main.css' rel='stylesheet' />
<link href='../packages/timegrid/main.css' rel='stylesheet' />
<script src='../packages/core/main.js'></script>
<script src='../packages/interaction/main.js'></script>
<script src='../packages/daygrid/main.js'></script>
<script src='../packages/timegrid/main.js'></script>
<script>


function OpenProgram()
{
    StartCalendar();
}

function StartCalendar()
{  
debugger;
       //document.getElementById("calendar").style.visibility = "visible"; 
       DrawCalendar1();
      //bottomButtons(); 
}

function DrawCalendar1()
{
  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'
      },
      defaultDate: '2019-08-12',
      navLinks: true, // can click day/week names to navigate views
      selectable: true,
      selectMirror: true,
      select: function(arg) {
        var title = prompt('Event Title:');
        if (title) {
          calendar.addEvent({
            title: title,
            start: arg.start,
            end: arg.end,
            allDay: arg.allDay
          })
        }
        calendar.unselect()
      },
      editable: true,
      eventLimit: true, // allow "more" link when too many events
      events: [
        {
          title: 'All Day Event',
          start: '2019-08-01'
        },
        {
          title: 'Long Event',
          start: '2019-08-07',
          end: '2019-08-10'
        },
        {
          groupId: 999,
          title: 'Repeating Event',
          start: '2019-08-09T16:00:00'
        },
        {
          groupId: 999,
          title: 'Repeating Event',
          start: '2019-08-16T16:00:00'
        },
        {
          title: 'Conference',
          start: '2019-08-11',
          end: '2019-08-13'
        },
        {
          title: 'Meeting',
          start: '2019-08-12T10:30:00',
          end: '2019-08-12T12:30:00'
        },
        {
          title: 'Lunch',
          start: '2019-08-12T12:00:00'
        },
        {
          title: 'Meeting',
          start: '2019-08-12T14:30:00'
        },
        {
          title: 'Happy Hour',
          start: '2019-08-12T17:30:00'
        },
        {
          title: 'Dinner',
          start: '2019-08-12T20:00:00'
        },
        {
          title: 'Birthday Party',
          start: '2019-08-13T07:00:00'
        },
        {
          title: 'Click for Google',
          url: 'http://google.com/',
          start: '2019-08-28'
        }
      ]
    });

    calendar.render();
  });
}

</script>
<style>

  body {
    margin: 40px 10px;
    padding: 0;
    font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
    font-size: 14px;
  }

  #calendar {
    max-width: 900px;
    margin: 0 auto;
  }

</style>
</head>
<body onload="OpenProgram()">

  <div id='calendar'></div>

</body>
</html>

函数OpenProgram()
{
StartCalendar();
}
函数StartCalendar()
{  
调试器;
//document.getElementById(“日历”).style.visibility=“可见”;
1();
//底部按钮();
}
函数DrawCalendar1()
{
document.addEventListener('DOMContentLoaded',function(){
var calendarEl=document.getElementById('calendar');
var calendar=新的完整日历。日历(calendarEl{
插件:['interaction','dayGrid','timeGrid'],
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“dayGridMonth、timeGridWeek、timeGridDay”
},
默认日期:“2019-08-12”,
navLinks:true,//可以单击日/周名称来导航视图
是的,
选择镜像:对,
选择:函数(arg){
var title=prompt('事件标题:');
如果(标题){
日历.addEvent({
标题:标题,,
开始:arg.start,
结束:arg.end,
全天:arg.全天
})
}
calendar.unselect()
},
是的,
eventLimit:true,//当事件太多时允许“更多”链接
活动:[
{
标题:“全天活动”,
开始日期:2019-08-01
},
{
标题:“长期活动”,
开始日期:2019-08-07,
完:2019-08-10
},
{
群组ID:999,
标题:“重复事件”,
开始:“2019-08-09T16:00:00”
},
{
群组ID:999,
标题:“重复事件”,
开始:“2019-08-16T16:00:00”
},
{
标题:"会议",,
开始:“2019-08-11”,
完:2019-08-13
},
{
标题:"会议",,
开始:“2019-08-12T10:30:00”,
完:2019-08-12T12:30:00
},
{
标题:"午餐",,
开始:“2019-08-12T12:00:00”
},
{
标题:"会议",,
开始:“2019-08-12T14:30:00”
},
{
标题:"欢乐时光",,
开始:“2019-08-12T17:30:00”
},
{
标题:"晚餐",,
开始:“2019-08-12T20:00:00”
},
{
标题:"生日派对",,
开始:“2019-08-13T07:00:00”
},
{
标题:“点击谷歌”,
网址:'http://google.com/',
开始日期:2019-08-28
}
]
});
calendar.render();
});
}
身体{
利润率:40像素10像素;
填充:0;
字体系列:Arial、Helvetica Neue、Helvetica、无衬线字体;
字体大小:14px;
}
#历法{
最大宽度:900px;
保证金:0自动;
}
调试时,代码中没有错误


当从函数内部调用日历时,如何使其显示?

使用
onload
document.addEventListener('DOMContentLoaded'
)同时执行确实毫无意义-它们都做着非常相似的工作,即让代码等待页面加载后再执行

但是,当您运行
document.addEventListener('DOMContentLoaded'
)时,
DOMContentLoaded
事件已经发生,因此分配的回调永远不会启动-这就是日历永远不会加载的原因

与其使用内联的
onload
(通常认为这是一种比较老式的方式(由于HTML中有内联JS,所以不太容易维护)来完成,一种明智的方法是在任何函数之外处理
domcontentload
(因此在加载脚本块时立即添加处理程序)然后调用其中的
OpenProgram
函数:

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link href='../packages/core/main.css' rel='stylesheet' />
<link href='../packages/daygrid/main.css' rel='stylesheet' />
<link href='../packages/timegrid/main.css' rel='stylesheet' />
<script src='../packages/core/main.js'></script>
<script src='../packages/interaction/main.js'></script>
<script src='../packages/daygrid/main.js'></script>
<script src='../packages/timegrid/main.js'></script>    

<script>
document.addEventListener('DOMContentLoaded', OpenProgram);

function OpenProgram()
{
    StartCalendar();
}

function StartCalendar()
{  
console.log("here");
       //document.getElementById("calendar").style.visibility = "visible"; 
       DrawCalendar1();
      //bottomButtons(); 
}

function DrawCalendar1()
{
    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'
      },
      defaultDate: '2019-08-12',
      navLinks: true, // can click day/week names to navigate views
      selectable: true,
      selectMirror: true,
      select: function(arg) {
        var title = prompt('Event Title:');
        if (title) {
          calendar.addEvent({
            title: title,
            start: arg.start,
            end: arg.end,
            allDay: arg.allDay
          })
        }
        calendar.unselect()
      },
      editable: true,
      eventLimit: true, // allow "more" link when too many events
      events: [
        {
          title: 'All Day Event',
          start: '2019-08-01'
        },
        {
          title: 'Long Event',
          start: '2019-08-07',
          end: '2019-08-10'
        },
        {
          groupId: 999,
          title: 'Repeating Event',
          start: '2019-08-09T16:00:00'
        },
        {
          groupId: 999,
          title: 'Repeating Event',
          start: '2019-08-16T16:00:00'
        },
        {
          title: 'Conference',
          start: '2019-08-11',
          end: '2019-08-13'
        },
        {
          title: 'Meeting',
          start: '2019-08-12T10:30:00',
          end: '2019-08-12T12:30:00'
        },
        {
          title: 'Lunch',
          start: '2019-08-12T12:00:00'
        },
        {
          title: 'Meeting',
          start: '2019-08-12T14:30:00'
        },
        {
          title: 'Happy Hour',
          start: '2019-08-12T17:30:00'
        },
        {
          title: 'Dinner',
          start: '2019-08-12T20:00:00'
        },
        {
          title: 'Birthday Party',
          start: '2019-08-13T07:00:00'
        },
        {
          title: 'Click for Google',
          url: 'http://google.com/',
          start: '2019-08-28'
        }
      ]
    });

    calendar.render();
}
</script>
<style>

  body {
    margin: 40px 10px;
    padding: 0;
    font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
    font-size: 14px;
  }

  #calendar {
    max-width: 900px;
    margin: 0 auto;
  }

</style>
</head>
<body>
  <div id='calendar'></div>
</body>
</html>

addEventListener('DOMContentLoaded',OpenProgram);
函数OpenProgram()
{
StartCalendar();
}
函数StartCalendar()
{  
console.log(“此处”);
//document.getElementById(“日历”).style.visibility=“可见”;
1();
//底部按钮();
}
函数DrawCalendar1()
{
var calendarEl=document.getElementById('calendar');
var calendar=新的完整日历。日历(calendarEl{
插件:['interaction','dayGrid','timeGrid'],
标题:{
左:“上一个,下一个今天”,
中心:'标题',
右图:“dayGridMonth、timeGridWeek、timeGridDay”
},
默认日期:“2019-08-12”,
navLinks:true,//可以单击日/周名称来导航视图
是的,
选择镜像:对,
选择:函数(arg){
var title=prompt('事件标题:');
如果(标题){
日历.addEvent({
标题:标题,,
开始:arg.start,
结束:arg.end,
全天:arg.全天
})
}
calendar.unselect()
},
是的,
eventLimit:true,//当事件太多时允许“更多”链接
活动:[
{
标题:“全天活动”,
开始日期:2019-08-01
},
{
标题:“长期活动”,
开始日期:2019-08-07,
完:2019-08-10
},
{
群组ID:999,
标题:“重复事件”,
开始:“2019-08-09T16:00:00”
},
{
群组ID:999,
标题:“重复事件”,
开始:“2019-08-16T16:00:00”
},
{
标题:"会议",,
开始:“2019-08-11”,
完:2019-08-13
},
{
标题:"会议",,
开始:“2019-08-12T10:30:00”,
完:2019-08-12T12:30:00
},
{
标题:"午餐",,
开始时间:2019-08-12T12:00:0