JS原生实现的简单万年历(平铺)

<!doctype html>
<html>

<head>
    <meta charset="utf-8">
    <title>ww</title>
    <style>
        table {
            float: left;
            padding: 15px 15px 15px 15px;
            display: block;
        }

        th {
            background: darkred;
            color: whitesmoke;
        }

        td {
            color: burlywood;
        }

        a {
            text-decoration: none;
            color: black;
        }

        a:active {
            background: yellow;
            color: brown;
        }
    </style>
    <script>
        var year = parseInt(prompt("输入年份:", "2021"));
        document.write(calendar(year));
        function calendar(y) {

            var html = '';

            for (var m = 1; m <= 12; ++m) {
                html += '<table>';
                html += '<tr><th colspan="7">' + y + '年' + m + '月</th></tr>';
                html += '<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>';

                // 获取每个月份共有多少天
                var max = new Date(y, m, 0).getDate();

                // 从该月份第一天遍历到最后一天
                for (var d = 1; d <= max; ++d) {

                    // 获取指定日期的星期值
                    var w = new Date(y, m - 1, d).getDay();

                    if (d == 1) {
                        // 一个月第一天就是一行
                        html += '<tr>';
                    }

                    // 逢周日是分行开始
                    if (d != 1 && w == 0) {
                        html += '<tr>'
                    }

                    // 第一天不是周日时,插入空白
                    if (d == 1 && w != 0) {
                        html += '<td colspan="' + w + '"></td>'
                    }

                    html += '<td onclick="showDate(' + year + ',' + m + ',' + d + ',' + w + ')">' + d + '</td>';

                    // 逢周六分行结束
                    if (w == 6) {
                        html += '</tr>'
                    }
                }

                html += '</table>';

            }
            return html;
        }

        function showDate(y, m, d, w) {
            w = w == 0 ? '日' : w;
            console.log(y + "年" + m + "月" + d + "日" + "周" + w)
        }

    </script>
</head>

<body>

</body>

</html>

原文地址:https://www.cnblogs.com/ww01/p/14642572.html