0

これについて同様のスレッドを見つけましたが、特定の問題に対してそれらのソリューションを機能させることができないようです。私は現在、イベントの開始日を強調表示するカレンダーを持っています。これを変更して、開始日から終了日までを強調表示する必要があります。注: このコードは私が書いたものではありません。これを書いた人は、ここにたくさんのがらくたを残したようです。判断しないでください。

attachTocalendar : function(json, m, y) {
    var arr = new Array();
    if (json == undefined || !json.month || !json.year) {
        return;
    }
    m = json.month;
    y = json.year;

    if (json.events == null) {
        return;
    }
    if (json.total == 0) {
        return;
    }
    var edvs = {};
    var kds = new Array();
    var offset = en4.ynevent.getDateOffset(m, y);
    var tds = $$('.ynevent-cal-day');
    var selected = new Array(), numberOfEvent = new Array();
    for (var i = 0; i < json.total; ++i) {
        var evt = json.events[i];
        var s1 = evt.starttime.toTimestamp();
        var s0 = s1;
        var s2 = evt.endtime.toTimestamp();
        var ds = new Date(s1);
        var de = new Date(s2);
        var id = ds.getDateCellId();
        index = selected.indexOf(id);
        if (index < 0)
        {
            numberOfEvent[selected.length] = 1;
            selected.push(id);
        }
        else
        {
            numberOfEvent[index] = numberOfEvent[index] + 1;
        }
    }

    for (var i = 0; i < selected.length; i++) {
        var td = $(selected[i]);
        if (td != null) {
            if (!(td.hasClass("otherMonth"))){
                td.set('title', numberOfEvent[i] + ' ' + en4.core.language.translate(numberOfEvent[i] > 1 ? 'events' : 'event'));
                td.addClass('selected');
            }
        }
    }
},
4

1 に答える 1

0

それらをすべて選択しようとする代わりに、代わりにそれらを反復することをお勧めします。だから、このようなもの:

function highlightDates(startDate, endDate) {
    var curDate = startDate;
    var element;

    $('.selected').removeClass('selected'); // reset selection

    while (curDate <= endDate) {
        element = getElementForDate(curDate)
        element.addClass('selected');

        curDate.setDate(curDate.getDate() + 1); // add one day
    }
}

function getElementForDate(someDate) {
    return $('#day-' + someDate.getYear() + "-" + someDate.getMonth() + "-" + someDate.getDay());
}
于 2013-06-29T21:57:30.080 に答える