永web写一个日历,要求可以自己切换月份
时间: 2024-03-18 22:40:34 浏览: 16
要实现一个可以切换月份的日历,可以修改上面的代码,添加一个下拉框或按钮来实现切换月份的功能。具体步骤如下:
1. 在 HTML 文件中添加一个下拉框或按钮,用于切换月份。可以使用 `select` 元素和 `option` 元素创建下拉框,或使用 `button` 元素创建按钮。
2. 在 JavaScript 中添加一个函数,用于获取下拉框或按钮的值,并根据值来计算出新的日期。可以使用 `addEventListener` 方法将函数绑定到下拉框或按钮的点击事件上。
3. 修改表格中的日期,以显示新的月份。可以在函数中重新计算日期,并使用 `innerHTML` 属性修改表格中的日期。
以下是一个简单的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Calendar</title>
<style>
table {
border-collapse: collapse;
}
td {
border: 1px solid black;
padding: 5px;
text-align: center;
}
.today {
background-color: yellow;
}
</style>
</head>
<body>
<select id="month">
<option value="0">一月</option>
<option value="1">二月</option>
<option value="2">三月</option>
<option value="3">四月</option>
<option value="4">五月</option>
<option value="5">六月</option>
<option value="6">七月</option>
<option value="7">八月</option>
<option value="8">九月</option>
<option value="9">十月</option>
<option value="10">十一月</option>
<option value="11">十二月</option>
</select>
<button id="prev">上个月</button>
<button id="next">下个月</button>
<table>
<tr>
<th>周日</th>
<th>周一</th>
<th>周二</th>
<th>周三</th>
<th>周四</th>
<th>周五</th>
<th>周六</th>
</tr>
</table>
<script>
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth();
var date = today.getDate();
var firstDay = new Date(year, month, 1).getDay();
var lastDate = new Date(year, month + 1, 0).getDate();
var table = document.getElementsByTagName("table")[0];
var row = table.insertRow(-1);
var count = 0;
for (var i = 0; i < 7; i++) {
var cell = row.insertCell(i);
if (i < firstDay) {
cell.innerHTML = "";
} else {
count++;
cell.innerHTML = count;
if (count == date) {
cell.classList.add("today");
}
}
}
for (var i = 0; i < 5; i++) {
var row = table.insertRow(-1);
for (var j = 0; j < 7; j++) {
var cell = row.insertCell(j);
if (count < lastDate) {
count++;
cell.innerHTML = count;
if (count == date) {
cell.classList.add("today");
}
} else {
cell.innerHTML = "";
}
}
}
var select = document.getElementById("month");
var prev = document.getElementById("prev");
var next = document.getElementById("next");
select.addEventListener("change", function() {
month = parseInt(select.value);
updateCalendar();
});
prev.addEventListener("click", function() {
month--;
if (month < 0) {
year--;
month = 11;
}
updateCalendar();
});
next.addEventListener("click", function() {
month++;
if (month > 11) {
year++;
month = 0;
}
updateCalendar();
});
function updateCalendar() {
var firstDay = new Date(year, month, 1).getDay();
var lastDate = new Date(year, month + 1, 0).getDate();
var rows = table.getElementsByTagName("tr");
for (var i = 1; i < rows.length; i++) {
var cells = rows[i].getElementsByTagName("td");
for (var j = 0; j < cells.length; j++) {
var cell = cells[j];
var num = parseInt(cell.innerHTML);
if (num && num <= lastDate) {
cell.innerHTML = num;
if (year == today.getFullYear() && month == today.getMonth() && num == today.getDate()) {
cell.classList.add("today");
} else {
cell.classList.remove("today");
}
} else {
cell.innerHTML = "";
}
}
}
var count = 0;
for (var i = 0; i < 7; i++) {
var cell = rows[0].getElementsByTagName("th")[i];
if (i < firstDay) {
cell.innerHTML = "";
} else {
count++;
cell.innerHTML = count;
}
}
for (var i = 0; i < 5; i++) {
var row = rows[i + 1];
for (var j = 0; j < 7; j++) {
var cell = row.getElementsByTagName("td")[j];
if (count < lastDate) {
count++;
cell.innerHTML = count;
if (year == today.getFullYear() && month == today.getMonth() && count == today.getDate()) {
cell.classList.add("today");
} else {
cell.classList.remove("today");
}
} else {
cell.innerHTML = "";
}
}
}
}
</script>
</body>
</html>
```
该代码会创建一个包含下拉框和按钮的日历,可以使用它们来切换月份。