Javascript偶尔会失败(10%的时间)

Javascript偶尔会失败(10%的时间),javascript,.net,Javascript,.net,我的javascript代码有一个小问题。我正在尝试使用fullCalendar,90%的时间它都能完美地工作。然而,大约有10%的情况下,它似乎无法加载fullCalendar函数,我不知道为什么 我调用日历所在div上方的3个外部脚本: <script src="../../../../assets/lib/moment.min.js"></script> <script src="../../../../assets/lib/jquery.min.js">

我的javascript代码有一个小问题。我正在尝试使用fullCalendar,90%的时间它都能完美地工作。然而,大约有10%的情况下,它似乎无法加载fullCalendar函数,我不知道为什么

我调用日历所在div上方的3个外部脚本:

<script src="../../../../assets/lib/moment.min.js"></script>
<script src="../../../../assets/lib/jquery.min.js"></script>
<script src="../../../../assets/js/fullcalendar.js"></script>
<div id="calendar"></div>
以下是我的javascript:

//variables to pull the serialized data from c# through to javascript.
var dateStart = '<%=dateStartListToJS%>';
var dateEnd = '<%=dateEndListToJS%>';
var titles = '<%=titlesListToJS%>';
var links = '<%=linksListToJS%>';

//use JSON to parse into arrays.
var dateStartArray = JSON.parse(dateStart);
var dateEndArray = JSON.parse(dateEnd);
var titlesArray = JSON.parse(titles);
var linksArray = JSON.parse(links);

//initiate variable to handle our calendar events.
var JSONEvents = [];

//for testing...
//alert(dateStartArray + dateEndArray + titlesArray + linksArray);

//show the calendar and hide the buttons to switch between the calendar and list.
$("#calendar").show();
$(".viewAsList").hide();
$(".viewAsCalendar").hide();

//while we still have more calendar events to add, run this loop to add courses to the calendar.
//calendar currently only displays the start date of the course.
for (var i = 0; i < dateStartArray.length ; i++) {
    JSONEvents.push(
        {
            "title": titlesArray[i],
            "url": linksArray[i],
            "start": dateStartArray[i],
            "end": dateEndArray[i],
            "allDay": true,
            //"backgroundColor"       :   "#FFF"
        });
}

//function: createCalendar. creates the calendar
function createCalendar() {
    //using fullcalendar
    $('#calendar').fullCalendar({

        //setting up the header of the calendar.
        header: {
            center: '',
            right: 'prev,next',
            left: 'title'
            //right: 'month'
        },
        eventColor: '#FCFCFC',
        events: JSONEvents

    });
    $(".viewAsCalendar").show();
    $("#calendar").hide();

    $('.viewAsCalendar').click(function () {
        $(".viewAsCalendar").hide();
        $(".viewAsList").show();
        $("#courseDetailDisplay").hide();
        $("#calendar").show();

    });

    $('.viewAsList').click(function () {
        $(".viewAsCalendar").show();
        $(".viewAsList").hide();
        $("#courseDetailDisplay").show();
        $("#calendar").hide();


    });


}

//if the calendar can't load and an error is thrown, try reloading the calendar
//function loadCalendar() {
//    try {
//        createCalendar();
//    }
//    catch (err) {
//        //alert("test");
//        setTimeout(function () {
//            loadCalendar();
//        }, 4000);

//    }
//}

$(window).load(function () {
    createCalendar();

});
当我运行页面时,它通常工作正常,但是当它失败时,我在包含$'calendar'.fullCalendar{的行上得到一个错误,说:

未捕获类型错误:未定义不是函数

有人知道为什么会出现这种情况吗?我尝试过用document.ready和head.ready切换window.load,但都没有解决这个问题

非常感谢您的帮助

谢谢

编辑:根据建议,我尝试了以下方法:

将所有引号更改为双引号 增加了150毫秒的超时时间 检查“网络”选项卡以查看是否有文件未加载

不幸的是,以上这些都没有帮助,因为所有3个文件都在加载,最大加载时间为50毫秒,通常在10-15毫秒左右


还有其他建议吗,伙计们?我感谢这里的帮助,你的Js是什么时候执行的?目前我看不出有任何问题,没有种族条件或其他什么。我想这没有什么区别,但你正在混合和创建字符串。一个丑陋的解决方法可能是setTimeoutloadCalendar,50;实际上,你从来没有调用createCalendar,所以您展示给我们的e代码不是您测试的代码。如果不是偶然,它总是在同一个位置失败,那么它必须是.fullCalendar,因为以前已经使用过$'calendar',但是那里有双引号。因此我会尝试我的第一个建议。其他解决方法:将js文件添加到缓存清单,然后将清单添加到站点,等等在定义fullCalendar之前,请尝试将外部脚本移动到标题。@romuleald,对不起,我的代码在结尾显示了错误的函数名,loadCalendar实际上应该是createCalendar,我在将代码发布到此处之前清理代码时忘了将其切换出去。我将对其进行编辑。