Javascript 仅在事件发生当天的一次单击中显示事件

Javascript 仅在事件发生当天的一次单击中显示事件,javascript,Javascript,我用这段代码显示日历中的事件,但它显示了当月的所有事件,我只想显示用户单击某一天时当天的事件。例如,单击2月10日,您将获得当天的所有事件 var eventList = $('<div/>').addClass('c-event-list'); for (var i = 0; i < settings.events.length; i++) { var d = settings.events[i].datetime;

我用这段代码显示日历中的事件,但它显示了当月的所有事件,我只想显示用户单击某一天时当天的事件。例如,单击2月10日,您将获得当天的所有事件

        var eventList = $('<div/>').addClass('c-event-list');

        for (var i = 0; i < settings.events.length; i++) {
            var d = settings.events[i].datetime;

            if ((d.getMonth() - 1) == dMonth && d.getFullYear() == dYear) {
                var date = lpad(d.getMonth(), 2) + '/' +
                           lpad(d.getDate(), 2) + ' ' +
                           lpad(d.getHours() %12, 2) + ':' +
                           lpad(d.getMinutes(), 2);
                var item = $('<div/>').addClass('c-event-item');
                var title = $('<div/>')
                             .addClass('title')
                             .html(date + '  ' + settings.events[i].title + '<br />');
                var description = $('<div/>')
                                   .addClass('description')
                                   .html(settings.events[i].description + '<br />');

                item.attr('data-event-day', d.getDate());
                item.on('mouseover', mouseOverItem).on('mouseleave', mouseLeaveItem);
                item.append(title).append(description);
                eventList.append(item);
            }
       }

       $(instance).addClass('calendar');
       cEventsBody.append(eventList);
       $(instance).html(cBody).append(cEvents);
    }

    return print();
}
var eventList=$('').addClass('c-event-list');
对于(变量i=0;i');
变量说明=$('')
.addClass('说明')
.html(settings.events[i].description+'
'); item.attr('data-event-day',d.getDate()); 项。on('mouseover',mouseOverItem)。on('mouseleave',mouseleaveeItem); 项目.附加(标题).附加(说明); 事件列表。追加(项); } } $(实例).addClass('calendar'); cEventsBody.append(事件列表); $(instance.html(cBody.append)(cEvents); } 返回打印(); }

提前感谢您的帮助

从您的代码中我可以看到,这个条件决定了事件应该在哪个月和哪个年举行:

((d.getMonth() - 1) == dMonth && d.getFullYear() == dYear)
因此,当您希望仅在某一天显示事件时,必须扩展此条件,如:

(d.getDate() == dDay && (d.getMonth() - 1) == dMonth && d.getFullYear() == dYear) 

dDay是一个新变量,用于保存事件应在哪一天举行。

在您的请求后,在最后一个答案中显示“无事件”,当选择了一个月且没有可用的事件时

我修改了这个插件,当右边的列表为空时,它会显示一个“文本”(例如“无事件”)。我已经测试过了,它是有效的

这个修改是可以的,因为它是MIT授权的

(函数($){
var eCalendar=函数(选项、对象){
//初始化全局变量
var adDay=new Date().getDate();
var admmonth=new Date().getMonth();
var adYear=新日期().getFullYear();
变量dDay=adDay;
var dMonth=adMonth;
var=adYear;
var实例=对象;
变量设置=$.extend({},$.fn.eCalendar.defaults,options);
函数lpad(值、长度、pad){
如果(键盘类型==‘未定义’){
pad='0';
}
var-p;
对于(变量i=0;i0){
第十个月--;
}否则{
月数=11;
代尔--;
}
打印();
};
var checkEventsOnCurrentMonth=函数(){
var eventNum=$('.c-event-list')。查找('.c-event-item')?$('.c-event-list')。查找('.c-event-item')。长度:0;
如果(!eventNum){
$('.c-event-list').html($.fn.eCalendar.defaults.noEventText);
}
};
函数loadEvents(){
if(typeof settings.url!=“未定义”&&settings.url!=“未定义”){
$.ajax({
url:settings.url,
async:false,
成功:功能(结果){
settings.events=结果;
}
});
}
}
函数打印(){
loadEvents();
var dWeekDayOfMonthStart=新日期(dYear,dMonth,1).getDay();
var dLastDayOfMonth=新日期(Dyar,dMonth+1,0);
var DlastDayOfPreiousMonth=新日期(Dyar,dMonth+1,0).getDate()-dWeekDayOfMonthStart+1;
var cBody=$('').addClass('c-grid');
var cEvents=$('').addClass('c-event-grid');
var cEventsBody=$('').addClass('c-event-body');
cEvents.append($('').addClass('c-event-title c-pad-top').html(settings.eventTitle));
cEvents.append(cEventsBody);
var cNext=$('').addClass('c-next c-grid-title c-pad-top');
var cMonth=$('').addClass('c-month c-grid-title c-pad-top');
var cPrevious=$('').addClass('c-previous c-grid-title c-pad-top');
html(settings.textArrows.previous);
html(settings.months[dmmonth]+''+dYear);
html(settings.textArrows.next);
cPrevious.on('mouseover',mouseover.)。on('mouseleave',mouseleave.)。on('click',上个月);
cNext.on('mouseover',mouseover.on('mouseleave',mouseleave.on('click',nextMonth));
B正文a