我想在日程表标题中设置日期,将div id
从日历创建函数放入标题文本。
我得到id
像这个$('.dayNumberCellValue').attr('id');
,但我有一个问题,当你在日历上点击一天,我得到相同的日期到所有的日子,"27"(这是我的日历的开始日期)。在我看来,在$('.dayNumberCellValue').attr('id');
去相同的日期,但为什么,以及如何日历工作良好,如果他必须只显示"27"日期在所有单元格?
点击功能->>
$('.div-cell').tap(function() {
var i;
var myDate2;
for (i = 0; i < 42; i++) {
$('#' + i + 'dayCell').removeClass('tapped');
}
$(this).toggleClass(
'tapped');
if($(this).hasClass('tapped')){
myDate2 = $('.dayNumberCellValue').attr('id');
$('#MSchedule header h4').text("S - "+myDate2);}
});
创建日历->
function setCalendar() {
var cTime = new Date();
var myDate = months[cTime.getMonth()] + " " + cTime.getFullYear();
var myDate2 = cTime.getDate() + " " + months[cTime.getMonth()];
$('#MCalendar header h4').text(myDate);
$('#MSchedule header h4').text("Schedule - " + myDate2)
var monthView = new Array(42);
var firstDayOfMonth = new Date(cTime.getFullYear(), cTime.getMonth(), 1);
while (firstDayOfMonth.getDay() != 1) {
firstDayOfMonth.addDays(-1);
}
var i;
for (i = 0; i < monthView.length; i++) {
startDate = new Date(firstDayOfMonth);
monthView[i] = startDate.addDays(i);
}
for(var day=0;day<monthView.length;day++){
var needDay=monthView[day].getDate();
var cell = $('#'+day+'dayCell');
var content = '<div class="dayNumberCellValue" id=' +needDay+ '>'
+ monthView[day].getDate()
+ '</div>';
cell.append(content);}
这一行:
myDate2 = $('.dayNumberCellValue').attr('id');
将始终获得第一个匹配元素(文档中第一个具有"dayNumberCellValue"类的元素,从顶部开始)的id
值。
您还没有显示您的标记,但是如果您想要的元素在选定的元素中,那么在您的tap
处理程序中,您可以像这样找到它:
myDate2 = $(this).find('.dayNumberCellValue').attr('id');
在 this
元素中查找第一个"dayNumberCellValue"元素,该元素将是您正在观看tap
事件的元素。
离题:你说你总是得到"27",这表明你使用"27"作为元素的id
。虽然这是最近被允许的(HTML5),但它在HTML 4和更早的版本中是无效的,在CSS中仍然无效。我建议不要使用以数字开头的ID。事实上,我认为我可能会使用data-*
属性来存储日期,而不是id
。