简体   繁体   English

JavaScript日历显示月份和日期

[英]Javascript calendar displaying month and days

I'm trying to display a calendar where the month and year show at the top, with the days on single line (number line format) below. 我正在尝试显示一个日历,其中月份和年份显示在顶部,而日期显示在单行(数字行格式)的下方。 I want to get the next and previous months after clicking a button. 我想在单击按钮后得到下一个和上一个月。

However, it only works after one click and I cant get the correct amount of days to display for the month. 但是,它仅在单击一次后有效,我无法获得该月显示的正确天数。

 var month = new Array(); month[0] = "January"; month[1] = "February"; month[2] = "March"; month[3] = "April"; month[4] = "May"; month[5] = "June"; month[6] = "July"; month[7] = "August"; month[8] = "September"; month[9] = "October"; month[10] = "November"; month[11] = "December"; var d = new Date(); var label = month[d.getMonth()]; var year = d.getFullYear(); var day = d.getDate(); document.getElementById("mon").innerHTML = label + " " + year; document.getElementById("days").innerHTML = day; //display days var daysInMonths = [31, (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] document.getElementById("prevBtn").addEventListener("click", previousMonth); function previousMonth() { label = month[d.getMonth() - 1]; document.getElementById("mon").innerHTML = label + " " + year; } document.getElementById("nextBtn").addEventListener("click", nextMonth); function nextMonth() { label = month[d.getMonth() + 1]; if (label > 11) { year = d.getFullYear() + 1; } document.getElementById("mon").innerHTML = label + " " + year; } 
 <div class="calendar"> <div class="header"> <span class="left button" id="prevBtn">&lang;</span> <span><h1 id="mon"></h1></span> <span class="right button" id="nextBtn">&rang;</span> </div> <table> <tbody> <tr id="days"></tr> </tbody> </table> </div> 

I've made a few modifications below as per my comment above. 根据上面的评论,我在下面做了一些修改。

var month = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var today = new Date();
var label = month[today.getMonth()];
var mm = today.getMonth(); // keep track of the month
var year = today.getFullYear(); // keep track of the year
var day = today.getDate();
document.getElementById("mon").innerHTML = label + " " + year;
document.getElementById("days").innerHTML = day;

//display days
var daysInMonths = [31, (((year%4==0)&&(year%100!=0))||(year%400==0)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

document.getElementById("prevBtn").addEventListener("click", previousMonth);

function previousMonth() {
    mm -= 1; // decrement the month
    if (mm < 0) { // if we go before January
        mm = 11; // go to December
        year -= 1; // of previous year
    }
    label = month[mm];
    document.getElementById("mon").innerHTML = label + " " + year;
}

document.getElementById("nextBtn").addEventListener("click", nextMonth);
function nextMonth(){
    mm += 1; // increment month
    if (mm > 11) { // if we go after December
        mm = 0; // go to January
        year += 1; // of next year
    }
    document.getElementById("mon").innerHTML = label + " " + year;
}

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

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