显示线性日历时javascript不执行(仅适用于所有版本的IE)

时间:2014-10-09 03:08:40

标签: javascript internet-explorer

我的客户报告此页面上的线性日历存在问题:http://www.portailjeunesselac2m.org/

除了IE(所有版本)

之外,所有浏览器都能正常工作

它只显示事件而不执行javascript ...我尝试调试它,但不能"看"为什么失败了...你能帮我一些帮助吗?

因为我不知道在哪里看,我会尝试让html验证它...以防万一! 我修复了10个错误!...也许它可以提供帮助!

*注意3日期必须突出显示:10月8日,10日和24日......

1 个答案:

答案 0 :(得分:1)

问题出在这里(timeline.js,第53行)for(j = i; j > 0 && events[j - 1].date > tmp.date; j--)j = 1,但events是对象数组,前5个元素为空。它会产生错误Unable to get property 'date' of undefined or null reference

由于

,缺少前5个元素
if (date == "Invalid Date")
    continue;

this.events[i] = {

它会跳过某些事件,但仍会增加i计数器,将空元素留在数组中。尝试将this.events[i] = {替换为this.events.push({,并在结束)处添加}。或者使所有date有效:)

日期无效,因为new Date()无法识别" 11 01 2014"作为有效日期。尝试将其写成标题为" 2014-01-11" (" YYYY-MM-DD&#34)

ps:快速修复' - 将var date = new Date(eventItems[i].getAttribute("title"));替换为var date = new Date(eventItems[i].getAttribute("title").replace(/(\d+)\s+(\d+)\s+(\d+)/, '$3-$1-$2'));

pps:厌倦了所有的消息。这就是你的代码部分应该是这样的

    for (var i = 0; i < eventItems.length; i++) {
        var date = new Date(eventItems[i].getAttribute("title")
                            .replace(/(\d+)\s+(\d+)\s+(\d+)/, '$3-$1-$2'));

        if (date == "Invalid Date")
            continue;

        this.events.push({
            name    : eventItems[i].className,
            date    : date,
            day     : date.getDate(),
            month   : date.getMonth(),
            year    : date.getFullYear(),
            content : jQuery(eventItems[i]).text()            
        });
    }