Javascript" for"第一次循环没有完全执行

时间:2015-09-30 13:53:35

标签: javascript

我正在开发一个日历功能,用于在我们的CMS中显示数据库表数据。

我在JS中生成一个Calendar Table。数据库条目在C#中生成并放入数组中。最终结果如下所示:

var Termine = new Array(4);
Termine[0] = {
    ID:1,
    Datum:1442912403000,
    Titel:"Test",
    Detail:"Some encoded HTML"
};
Termine[1] = {
    ID:2,
    Datum:1444306500000,
    Titel:"Testing a bit more",
    Detail:"Some encoded HTML"
};
Termine[2] = {
    ID:3,
    Datum:1442880000000,
    Titel:"Test 2",
    Detail:"Some encoded HTML"
};
Termine[3] = {
    ID:4,
    Datum:1442932140000,
    Titel:"Test 3",
    Detail:"Some encoded HTML"
};

现在我在函数中循环遍历此数组并将约会(div)添加到表中:

function addTermine() {
    for (var i = 0; i < Termine.length; i++) {
        var t = Termine[i];
        var d = new Date(t.Datum);
        d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);
        if (d.getFullYear() === currentYear && d.getMonth() === currentMonthInt-1) {
            var ID = d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate();
            var longID =  d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate() + "-" + d.getHours() + "-" + d.getMinutes();
            var hour = d.getHours();
            if (hour < 10) hour = "0" + hour;
            var min = d.getMinutes();
            if (min < 10) min = "0" + min;
            var s = "<div id=\"ter" + longID + "\" class=\"termin\" onmouseover=\"showDetail(event,'detail" + longID + "');\" onmouseout=\"hideDetail('detail" + longID + "');\">" + hour + ":" + min + "<br>" + t.Titel + "</div>";
            $("#cont" + ID).html($("#cont" + ID).html() + s);
            $("#ter" + longID).click(function () {
                location.href = window.location.href + "?cid=" + cid + "&col=" + t.ID + "&details=1";
            });
            var detail = "<div id=\"detail" + longID + "\" class=\"hoverDetail\">" + unescape(t.Detail) + "</div>";
            $("body").append(detail);
        }
    }
}

问题是当第一次执行此函数时(从document.ready),for循环只执行一次,即使调试器中Termine.length为4。当我在更改月份后执行该功能以加载月份约会时,它会正确执行。

如果有人能指出我为什么在第一次尝试时没有正确执行,我将不胜感激。

我在我们的开发网站上测试它,随时可以调试它。

1 个答案:

答案 0 :(得分:2)

您的第一个日历元素会使用网址<script>/xtend/javascript/messages_de.js元素添加到dom中。当浏览器加载此脚本时,会导致javascript错误

  

$。验证器未定义

此javascript错误导致进一步的javascript处理停止。还有竞争条件,有时javascript会在加载坏脚本之前继续运行,在这种情况下,你会在日历上获得4个新的div。

发生错误是因为新注入的javascript代码正在尝试使用您未包含的jQuery validate plugin