简体   繁体   English

突出显示当前日期

[英]Highlight current date

My function displays the current date along with the next 60 days however I want the current date to be highlighted.我的函数显示当前日期以及接下来的 60 天,但我希望突出显示当前日期。 What would be the best approach?最好的方法是什么?

var date = new Date();
var dayInt = date.getDate();
var month = date.getMonth();
var year = date.getFullYear();

var dateRange = document.getElementById('calendar-table-range');
var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; 

document.getElementById("month").innerHTML = monthNames[month];
document.getElementById("year").innerHTML = year;


for(var day = 0; day < 60; day++) {
    var date = new Date();
    date.setDate(date.getDate() + day);

    var cell = document.createElement("li");
    var cellText = document.createTextNode(day);

    var date = ('0' + date.getDate()).slice(-2) + ' '
    + monthNames[date.getMonth()] + ' '
    // + date.getFullYear();

    cell.innerHTML = date;
    dateRange.appendChild(cell);
}

Since you're always showing the next 60 days, the current date is always the first date in the list, so it's easy to target with a CSS selector.由于您始终显示接下来的 60 天,因此当前日期始终是列表中的第一个日期,因此使用 CSS 选择器很容易定位。 For example:例如:

#calendar-table-range li:first-child {
  background-color: yellow;
}

Another way to go about it is to create a timestamp in the same format as the dates in the range then search for it.另一种方法是创建一个与范围内日期格式相同的时间戳,然后搜索它。

Eg the following, which puts formatting into a separate function and removes code that wasn't being used:例如下面的代码,它将格式化放入一个单独的函数中并删除未使用的代码:

 function formatDate(d){ let monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; return ('0 ' + d.getDate()).slice(-2) + ' ' + monthNames[d.getMonth()]; } function highlightToday() { let today = formatDate(new Date()); let cells = document.querySelectorAll('#calendar-table-range > li'); for (var i=0, iLen=cells.length; i<iLen; i++) { if (cells[i].textContent == today) { cells[i].style.color = 'red'; return; } } } var date = new Date(); var dayInt = date.getDate(); var month = date.getMonth(); var year = date.getFullYear(); var dateRange = document.getElementById('calendar-table-range'); var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; document.getElementById("month").innerHTML = monthNames[month]; document.getElementById("year").innerHTML = year; for(var day = 0; day < 6; day++) { var date = new Date(); date.setDate(date.getDate() + day); var cell = document.createElement("li"); var date = formatDate(date); cell.innerHTML = date; dateRange.appendChild(cell); }
 <div id="month"></div> <div id="year"></div> <input type="button" onclick="highlightToday()" value="highlight today"> <ol id="calendar-table-range"> </ol>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM