|
|

楼主 |
发表于 2023-12-30 09:52
|
显示全部楼层
本帖最后由 起个网名好难 于 2023-12-30 21:50 编辑
- <style>
- #calendar td {text-align:center;font-size:1.2em;font-weight:bold;}
- #calendar table {width:100%;}
- #calendar th {color:brown;font:bold 1.5em '微软雅黑';}
- #calendar {width:90%;padding:8px;margin:auto;}
- #outBlk {width:320px;background-color:#ddd;margin:auto;overflow:hidden;border:thick black solid;border-radius:24px;padding:16px 12px;}
- #selMonth {padding:10px;margin:2px;}
- </style>
- <div id="outBlk">
- <input type='button' id='prem'value='◄' title='上一个月'/>
- <input id="selMonth" type="month" min="1900-01" max="2100-01" />
- <input type='button' id='nextm' value='►' title='下一个月'/>
-   <input type='button' id='tday' value='今天' />
- <div id='calendar'></div>
- </div>
- <script>
- var chkMonth = new Date();
- selMonth.defaultValue = `${chkMonth.getFullYear()}-${chkMonth.getMonth()+1}`;
- prem.onclick = function() {
- selMonth.stepDown(1);
- showTable();
- }
- nextm.onclick = function() {
- selMonth.stepUp(1);
- showTable();
- }
- function mkTab(yv, mv) { // 构造月历表格
- let tmp_d = new Date(yv, mv-1, 1);
- let first_d = tmp_d.getDay(); // 这个月的第一天是星期几
- tmp_d = new Date(yv, mv, 0);
- let last_d = tmp_d.getDate() // 这个月有多少天
-
- // 表头是不变的
- let tabStr = "<table><tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>";
- // 第一行需特殊处理
- tabStr += '<tr>';
- let dv = 1, offIdx = 7 - first_d;
- for(i = 0; i < first_d; i++) tabStr += '<td> </td>'; // 第一行加上适当的空格
- for(i = 0; i < offIdx; i++,dv++) tabStr += `<td>${dv}</td>`; //
- tabStr += '</tr><tr>';
- // 其余的行处理
- for(i = dv; i <= last_d; i++) {
- tabStr += `<td>${i}</td>`;
- if((i-offIdx) % 7 == 0) tabStr += '</tr><tr>'; // 七个日子就换一行
- }
- tabStr += "</tr></table>"
- calendar.innerHTML = tabStr;
- }
- function showTable() {
- let ym = selMonth.value.split('-');
- mkTab(parseInt(ym[0]),parseInt(ym[1]));
- }
- selMonth.onchange = showTable;
- tday.onclick = function() {
- let cueday = new Date();
- selMonth.value = `${cueday.getFullYear()}-${cueday.getMonth()+1}`;
- showTable();
- let cday = cueday.getDate();
- let tds = calendar.querySelectorAll("td");
-
- tds.forEach(function(ele,idx) {
- if(ele.innerHTML == cday) ele.style.color = 'red';
- });
- }
- showTable();
- </script>
复制代码
|
|