Javascript";至于;第一次循环未完全执行

Javascript";至于;第一次循环未完全执行,javascript,Javascript,我正在开发一个日历功能,用于在CMS中显示数据库表数据 我用JS生成了一个日历表。数据库条目在C#中生成,并放入数组中。最终结果如下所示: var Termine = new Array(4); Termine[0] = { ID:1, Datum:1442912403000, Titel:"Test", Detail:"Some encoded HTML" }; Termine[1] = { ID:2, Datum:1444306500000,

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

我用JS生成了一个日历表。数据库条目在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);
        }
    }
}
函数addTermine(){
对于(变量i=0;i“+t.滴度+”;
$(“#cont”+ID).html($(“#cont”+ID).html()+s);
$(“#ter”+longID)。单击(函数(){
location.href=window.location.href+“?cid=“+cid+”&col=“+t.ID+”&details=1”;
});
var-detail=“”+unescape(t.detail)+”;
$(“正文”)。附加(详情);
}
}
}
问题是,当第一次执行此函数时(从
document.ready
),即使调试器中的
Termine.length
为4,for循环也只执行一次。当我在更改月份以加载该月份约会后执行函数时,它会正确执行

如果有人能告诉我为什么它在第一次尝试时不能正确执行,我将不胜感激


我正在我们的开发网站上测试它,请随意调试。

您的第一个日历元素使用url
/xtend/javascript/messages\u de.js
添加到dom中。当浏览器加载此脚本时,会导致javascript错误

$。验证程序未定义

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


出现此错误是因为新注入的javascript代码试图使用jQuery,而您没有包括它。

您怎么知道它没有完全执行?可能您的条件不满足?可能与显示第一个div
$后发生的javascript错误有关。当我调试代码时,validator未定义,在for循环的第一行上有一个断点,它只停止一次,然后退出循环@Jamiec在哪个浏览器中测试它?我使用的是当前的谷歌浏览器,没有收到错误信息。虽然我得到了
未捕获类型错误:无法读取未定义的
@fluegu的属性“messages”-在本例中,FF给出了一条更有意义的错误消息,但是如果您查看错误的代码行(
$。validator
是“未定义”的,并且它没有属性
消息
),Chrome给出了相同的问题@我以为你有错误,但你没有包括在内。非常感谢。不知怎么的,那个错误消息没有传到我的控制台。添加了JQueryValidate,现在它可以工作了