javascript - 一个轻松创建 html 日历表的插件

标签 javascript html calendar html-table

在 HTML 页面中创建日历的一种方法是创建每月 HTML 表格并手动填充它们。但是,是否有一个插件可以自动填充它们,例如通过提供月份值?

我不想在日历上注册事件,我只想在 html 页面上显示 12 个表格(每个月一个)。没有多余的装饰。

最佳答案

所有作品均归 this tutorial 的作者所有。它可以轻松增强到 12 个月的日历:

function calendar(month) {

    //Variables to be used later.  Place holders right now.
    var padding = "";
    var totalFeb = "";
    var i = 1;
    var testing = "";

    var current = new Date();
    var cmonth = current.getMonth(); // current (today) month
    var day = current.getDate();
    var year = current.getFullYear();
    var tempMonth = month + 1; //+1; //Used to match up the current month with the correct start date.
    var prevMonth = month - 1;

    //Determing if Feb has 28 or 29 days in it.  
    if (month == 1) {
        if ((year % 100 !== 0) && (year % 4 === 0) || (year % 400 === 0)) {
            totalFeb = 29;
        } else {
            totalFeb = 28;
        }
    }

    // Setting up arrays for the name of the months, days, and the number of days in the month.
    var monthNames = ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"];
    var dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thrusday", "Friday", "Saturday"];
    var totalDays = ["31", "" + totalFeb + "", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31"];

    // Temp values to get the number of days in current month, and previous month. Also getting the day of the week.
    var tempDate = new Date(tempMonth + ' 1 ,' + year);
    var tempweekday = tempDate.getDay();
    var tempweekday2 = tempweekday;
    var dayAmount = totalDays[month];

    // After getting the first day of the week for the month, padding the other days for that week with the previous months days.  IE, if the first day of the week is on a Thursday, then this fills in Sun - Wed with the last months dates, counting down from the last day on Wed, until Sunday.
    while (tempweekday > 0) {
        padding += "<td class='premonth'></td>";
        //preAmount++;
        tempweekday--;
    }
    // Filling in the calendar with the current month days in the correct location along.
    while (i <= dayAmount) {

        // Determining when to start a new row
        if (tempweekday2 > 6) {
            tempweekday2 = 0;
            padding += "</tr><tr>";
        }

        // checking to see if i is equal to the current day, if so then we are making the color of that cell a different color using CSS. Also adding a rollover effect to highlight the day the user rolls over. This loop creates the actual calendar that is displayed.
        if (i == day && month == cmonth) {
            padding += "<td class='currentday'  onMouseOver='this.style.background=\"#00FF00\"; this.style.color=\"#FFFFFF\"' onMouseOut='this.style.background=\"#FFFFFF\"; this.style.color=\"#00FF00\"'>" + i + "</td>";
        } else {
            padding += "<td class='currentmonth' onMouseOver='this.style.background=\"#00FF00\"' onMouseOut='this.style.background=\"#FFFFFF\"'>" + i + "</td>";
        }
        tempweekday2++;
        i++;
    }


    // Outputing the calendar onto the site.  Also, putting in the month name and days of the week.
    var calendarTable = "<table class='calendar'> <tr class='currentmonth'><th colspan='7'>" + monthNames[month] + " " + year + "</th></tr>";
    calendarTable += "<tr class='weekdays'>  <td>Sun</td>  <td>Mon</td> <td>Tues</td> <td>Wed</td> <td>Thurs</td> <td>Fri</td> <td>Sat</td> </tr>";
    calendarTable += "<tr>";
    calendarTable += padding;
    calendarTable += "</tr></table>";
    document.getElementById("calendar").innerHTML += calendarTable;
}

function go12() {
    for (i = 0; i < 12; i++) {
        calendar(i);
    }
}

if (window.addEventListener) {
    window.addEventListener('load', go12, false);
} else if (window.attachEvent) {
    window.attachEvent('onload', go12);
}

http://jsfiddle.net/r4FAM/3/

http://jsfiddle.net/r4FAM/3/show/

关于javascript - 一个轻松创建 html 日历表的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391886/

相关文章:

JavaScript 不会在 Html 之前被调用

html - css 样式表格作为比例尺

events - 使用 Microsoft graph 创建事件时出错

javascript - 正则表达式不匹配内容,而是匹配整个搜索字符串

JavaScript 在此计数器中用逗号替换点作为十进制

javascript - 在行中对按其他列 ID 分组的一些其他列行值求和

javascript - 使用 HTML 和/或 Javascript 自包含登录

javascript - 操作数据 - 使用 Javascript

c - 通过输入字符月份和整数年份打印日历

java - 使用公历与当前日期进行比较,无需外部类