在網頁開發中,JavaScript(簡稱JS)是一個非常重要的語言。它可以為網頁增加動態效果,實現用戶交互等功能。其中,JS代碼萬年歷是一個比較經典的案例,今天我們就來一起了解一下它的實現。
首先,我們需要明確一個需求,那就是通過JS代碼來實現一個可以查看任意年月的萬年歷。通常,我們會使用表格來呈現日歷,而JS則負責幫助我們生成這個表格。
function drawCalendar(year, month) {
// 根據年月計算出本月有多少天
var daysInMonth = new Date(year, month, 0).getDate();
// 計算出本月第一天是星期幾(0 - 6 對應 周日 - 周六)
var firstDayWeek = new Date(year, month - 1, 1).getDay();
// 根據當前時間創建一個表格并將其添加到網頁中
var table = document.createElement("table");
document.body.appendChild(table);
// 表格頭部為本月的年月
var caption = table.createCaption();
caption.innerHTML = year + "年" + month + "月";
// 表格主體為日歷
var tr = table.insertRow();
for (var i = 0; i < 7; i++) {
var td = tr.insertCell();
td.innerHTML = ["日", "一", "二", "三", "四", "五", "六"][i];
}
// 表格主體為日歷
var row = table.insertRow();
for (var i = 0; i < firstDayWeek; i++) {
var cell = row.insertCell();
cell.innerHTML = "";
}
for (var i = 1; i <= daysInMonth; i++) {
var cell = row.insertCell();
cell.innerHTML = i;
if ((firstDayWeek + i) % 7 == 0) {
row = table.insertRow();
}
}
}
上面的代碼實現了一個drawCalendar()函數,它可以根據指定的年月來生成一個萬年歷。我們可以通過以下代碼來調用它:
drawCalendar(2022, 7);
執行后就會在網頁中出現一個如下圖所示的萬年歷:
正如我們上面所說,一個經典的萬年歷通常會使用表格來呈現。在我們的實現中,使用 table 元素來創建一個表格,并通過 caption 元素來添加表格頭部。接下來,我們需要創建表格主體,其中第一行是星期名,其余部分為具體日期內容。
程序實現中的核心是循環生成表格并添加元素,關鍵部分代碼片段如下:
// 表格主體為日歷
var tr = table.insertRow();
for (var i = 0; i < 7; i++) {
var td = tr.insertCell();
td.innerHTML = ["日", "一", "二", "三", "四", "五", "六"][i];
}
// ...
for (var i = 1; i <= daysInMonth; i++) {
var cell = row.insertCell();
cell.innerHTML = i;
if ((firstDayWeek + i) % 7 == 0) {
row = table.insertRow();
}
}
可以看到,我們按日期順序循環生成 td 元素并添加到 tr 元素中。在生成時需要注意一個問題,就是第一個日期的位置要對齊本月第一天是星期幾。這里使用了 getDay() 方法來獲取本月第一天的星期,再根據需要添加空白單元格。
另外,當日期填充到星期六時,需要新建一行 tr 元素來繼續填充日歷的下一行。這里使用了 insertRow() 方法來完成生成。
以上,我們就一起了解了一下JS代碼萬年歷的實現。通過這個案例我們可以看到,JS可以在網頁中發揮重要的作用,對開發優化有著重要的意義。