用javascript写一个动态表,第一行合并居中为“技术网络科考勤表”,第二行居中为年月,年的选择范围为2022年到2099年,月的选择范围为1-12月,根据当年闰年还是平年,可生成2月天数。第三行从第三列左到右根据年月生成当月日期,第四行从第三列从左到右根据第三行日期生成对应星期几。此表格第5行开始第一列为人名,分别为渠际时、陈海峰、梁胜玉、袁凯、侯博文、孙逍遥、郭智豪、杨沐松。第5行第二列往下,每个人名生成三行对应班次“行政班”、“生产班”、“夜班”,每个班次对应日期生成矩形方框输入,可以打√输入。第四行34列为“值班天数”,往下统计出此行输入√天数。第四行35列为“带班”,从第五行35列每个表格生成下拉可选择人员“渠际时”、“陈海峰”、“梁胜玉”、“袁凯”、“侯博文”、“孙逍遥”、“郭智豪”、“杨沐松”。在表格末尾生成“提交保存”按钮,功能为保存当前表格数据。
时间: 2023-10-10 19:05:17 浏览: 135
以下是一个简单的实现,仅供参考:
```javascript
// 创建表格
var table = document.createElement('table');
table.border = 1;
// 第一行
var row = table.insertRow();
var cell = row.insertCell();
cell.colSpan = 7;
cell.align = 'center';
cell.innerHTML = '技术网络科考勤表';
// 第二行
var row = table.insertRow();
var cell = row.insertCell();
cell.colSpan = 7;
cell.align = 'center';
var yearSelect = document.createElement('select');
for (var i = 2022; i <= 2099; i++) {
var option = document.createElement('option');
option.value = i;
option.text = i;
yearSelect.appendChild(option);
}
yearSelect.addEventListener('change', updateCalendar);
cell.appendChild(yearSelect);
cell.appendChild(document.createTextNode('年'));
var monthSelect = document.createElement('select');
for (var i = 1; i <= 12; i++) {
var option = document.createElement('option');
option.value = i;
option.text = i;
monthSelect.appendChild(option);
}
monthSelect.addEventListener('change', updateCalendar);
cell.appendChild(monthSelect);
cell.appendChild(document.createTextNode('月'));
// 第三行
var row = table.insertRow();
row.insertCell().innerHTML = '日期';
row.insertCell().innerHTML = '星期一';
row.insertCell().innerHTML = '星期二';
row.insertCell().innerHTML = '星期三';
row.insertCell().innerHTML = '星期四';
row.insertCell().innerHTML = '星期五';
row.insertCell().innerHTML = '星期六';
row.insertCell().innerHTML = '星期日';
// 第四行
var row = table.insertRow();
row.insertCell().innerHTML = '班次';
for (var i = 0; i < 7; i++) {
row.insertCell().innerHTML = ' ';
}
row.insertCell().innerHTML = '值班天数';
row.insertCell().innerHTML = '带班';
// 第五行
var names = ['渠际时', '陈海峰', '梁胜玉', '袁凯', '侯博文', '孙逍遥', '郭智豪', '杨沐松'];
for (var i = 0; i < names.length; i++) {
var row = table.insertRow();
row.insertCell().innerHTML = names[i];
for (var j = 0; j < 7; j++) {
row.insertCell().innerHTML = '';
}
for (var j = 0; j < 3; j++) {
var subRow = table.insertRow();
subRow.insertCell().innerHTML = j == 0 ? '行政班' : j == 1 ? '生产班' : '夜班';
for (var k = 0; k < 7; k++) {
subRow.insertCell().innerHTML = '';
}
subRow.insertCell();
subRow.insertCell();
}
}
// 提交按钮
var submitButton = document.createElement('button');
submitButton.innerHTML = '提交保存';
submitButton.addEventListener('click', saveData);
document.body.appendChild(table);
document.body.appendChild(submitButton);
// 根据选择的年月更新日历
function updateCalendar() {
var year = yearSelect.value;
var month = monthSelect.value;
var daysInMonth = new Date(year, month, 0).getDate();
var firstDay = new Date(year, month - 1, 1).getDay();
var row = table.rows[2];
for (var i = 1; i < row.cells.length; i++) {
var cell = row.cells[i];
if (i <= firstDay || i > firstDay + daysInMonth) {
cell.innerHTML = '';
} else {
cell.innerHTML = i - firstDay;
}
}
}
// 保存数据
function saveData() {
// TODO: 实现保存逻辑
}
```
阅读全文