【发布时间】:2021-03-31 17:54:02
【问题描述】:
我的日历早些时候工作正常。但现在它跳过了几个月,只显示有 31 天的月份。
例如:如果当前月份是5月,那么下个月应该是6月。但它在重复 May,然后将下个月显示为 July(有 31 天)。
let nav = 0;
const calendar = document.getElementById("calendar");
const weekdays = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
];
function load() {
const dt = new Date();
if (nav !== 0) {
dt.setMonth(new Date().getMonth() + nav);
}
const day = dt.getDate();
const month = dt.getMonth();
const year = dt.getFullYear();
const firstDayOfMonth = new Date(year, month, 1);
const daysInMonth = new Date(year, month + 1, 0).getDate();
const dateString = firstDayOfMonth.toLocaleDateString("en-us", {
weekday: "long",
year: "numeric",
month: "numeric",
day: "numeric",
});
const paddingDays = weekdays.indexOf(dateString.split(", ")[0]);
document.getElementById("monthDisplay").innerText =
dt.toLocaleDateString("pt-br", {
month: "long"
}).toUpperCase() +
" " +
year;
calendar.innerHTML = "";
for (let i = 1; i <= paddingDays + daysInMonth; i++) {
const daySquare = document.createElement("div");
daySquare.classList.add("day");
if (i > paddingDays) {
daySquare.innerText = i - paddingDays;
daySquare.addEventListener("click", () => console.log("click"));
} else {
daySquare.classList.add("padding");
}
calendar.appendChild(daySquare);
}
}
function initButtons() {
document.getElementById("nextButton").addEventListener("click", () => {
nav++;
load();
});
document.getElementById("backButton").addEventListener("click", () => {
nav--;
load();
});
}
initButtons();
load();
<div id="header">
<button id="backButton">Back</button>
<div id="monthDisplay"></div>
<button id="nextButton">Next</button>
</div>
<div id="weekdays">
<div>Domingo</div>
<div>Segunda</div>
<div>Terça</div>
<div>Quarta</div>
<div>Quinta</div>
<div>Sexta</div>
<div>Sabado</div>
</div>
<div id="calendar"></div>
【问题讨论】:
-
嗨约翰尼克莱森!显示所需输出的代码。请在代码 sn-p 中再次检查。
标签: javascript html css calendar