//替代标记日期事件myCalendar.addMark('2016-3-7', 'test'); function addMarkpp(data) { var daysElement = arrayfrompp(container.querySelectorAll('.sc-item')); var year = $(".sc-select-year").val(); var month = $(".sc-select-month").val(); var currentmonth = month - 1; if (data) { daysElement.forEach(function(v, i) { var day = +v.querySelector('.day').innerHTML; if (day == 1) currentmonth++; if (data[year + '-' + currentmonth + '-' + day]) { v.classList.add('sc-mark'); v.title = data[year + '-' + currentmonth + '-' + day]; } else { v.classList.remove('sc-mark'); v.title = ''; } }); } }
$(".sc-item").click(function() { //天数格添加点击事件。 var year = $(".sc-select-year").val(); //获取当前选择年份。 var month = $(".sc-select-month").val(); //获取当前选择月份。 if ($(this).hasClass("sc-othermenth")) { //console.log('不是本月的') if ($(this).children(".day").html() > 20) { //console.log('日期大于20,说明上月的') month = parseInt(month) - 1; } if ($(this).children(".day").html() < 10) { //console.log('日期小于10,说明次月的') month = parseInt(month) + 1; } } var day = $(this).children(".day").html(); //获取当前选择天数。 var date = year + "-" + month + "-" + day; // AddMark(date); });
$(".sc-item").click(function() { //天数格添加点击事件。 var year = $(".sc-select-year").val(); //获取当前选择年份。 var month = $(".sc-select-month").val(); //获取当前选择月份。 if ($(this).hasClass("sc-othermenth")) { //console.log('不是本月的') if ($(this).children(".day").html() > 20) { //console.log('日期大于20,说明上月的') month = parseInt(month) - 1; } if ($(this).children(".day").html() < 10) { //console.log('日期小于10,说明次月的') month = parseInt(month) + 1; } } var day = $(this).children(".day").html(); //获取当前选择天数。 var date = year + "-" + month + "-" + day; // AddMark(date); });
日历显示应为6行,现在只显示了5行,这样会导致有些日期没了。例如2019年9月份和12月份只有29天。
原代码:
for (var i = 0; i < 35; i++) { ...... } //对每一个格子遍历 for (var i = 0; i < 35; i++) { ...... } 修改为: for (var i = 0; i < 42; i++) { ...... } //对每一个格子遍历 for (var i = 0; i < 42; i++) { ...... }
将对日历格子的遍历次数改成42就可以了。
点击获取日期中,如果是非当前月份的天数可能会有问题,我把源码改了如下:
{ key: 'getSelectedDay', value: function getSelectedDay() { var selectYear = this.container.querySelector('.sc-select-year').value; var selectMonth = this.container.querySelector('.sc-select-month').value; var selectDay = this.selectDay.querySelector('.day').innerHTML; var cq = this.container.querySelector(".sc-selected.sc-othermenth"); if (cq) { //点击的日期是其他月份的 if (selectDay > 15) { //上个月 return new Date(selectYear, selectMonth - 2, selectDay); } else { //下个月 return new Date(selectYear, selectMonth, selectDay); } } return new Date(selectYear, selectMonth - 1, selectDay); }
别的问题我看大家都有解决,我再说一个小小bug。
设置起止年份:
timeRange: { startYear: 1900, endYear: 2049 },
设置到想要的年份,比如:
timeRange: { startYear: 1900, endYear: 2200 },
一定要在js中的第27行处,更改循环条件,否则大于条件的年份农历都为undefined
for (i = 1900; i < 2200 && offset - this.lYearDays(i) > 0; i++) {}
刚刚又发现了个bug,就是我更改了循环条件后,从2195年开始到2200年,农历日期依然为undefined,暂时没发现什么问题。我暂时只好,循环条件不变,将截止年份更改为2194年。那个哥们儿发现怎么回事了,说一声。