Skip to content
This repository was archived by the owner on Oct 17, 2023. It is now read-only.

Commit 364d6be

Browse files
author
hcj
committed
2
0 parents  commit 364d6be

File tree

4 files changed

+651
-0
lines changed

4 files changed

+651
-0
lines changed

.vscode/settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"liveServer.settings.port": 5501
3+
}

demo.html

+152
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<title>学生信息管理系统</title>
8+
<link rel="stylesheet" href="style.css">
9+
</head>
10+
11+
<body>
12+
<!-- 标题 -->
13+
<div class="title">
14+
<h1>学生信息管理系统</h1>
15+
</div>
16+
17+
<!-- 新增 删除 操作按钮 -->
18+
<div class="action">
19+
<button class="btn-add">新增</button>
20+
<button class="btn-delete">删除</button>
21+
</div>
22+
23+
<!-- 主要内容 -->
24+
<div class="Main">
25+
<!-- 表格首行 -->
26+
<table class="main">
27+
<thead class="fir-tb">
28+
<tr>
29+
<th><input type="checkbox" class="check-all"></th>
30+
<th>序号</th>
31+
<th>学号</th>
32+
<th>姓名</th>
33+
<th>学院</th>
34+
<th>专业</th>
35+
<th>年级</th>
36+
<th>班级</th>
37+
<th>年龄</th>
38+
<th>操作</th>
39+
</tr>
40+
</thead>
41+
<tbody class="tbody">
42+
<!-- <tr>
43+
<th><input type="checkbox" class="check-sg"></th>
44+
<th>1</th>
45+
<th>123456</th>
46+
<th>张三</th>
47+
<th>计算机学院</th>
48+
<th>软件工程</th>
49+
<th>2023</th>
50+
<th>1</th>
51+
<th>18</th>
52+
<th>操作</th>
53+
</tr>
54+
<tr>
55+
<th><input type="checkbox" class="check-sg"></th>
56+
<th>2</th>
57+
<th>12345678</th>
58+
<th>李四</th>
59+
<th>会计学院</th>
60+
<th>会计学</th>
61+
<th>2023</th>
62+
<th>1</th>
63+
<th>18</th>
64+
<th>操作</th>
65+
</tr> -->
66+
</tbody>
67+
</table>
68+
69+
<!-- 新增学生信息收集表 -->
70+
<div class="info">
71+
<!-- 表头 -->
72+
<div class="info-title">
73+
<p>新增学生信息</p>
74+
</div>
75+
76+
<!-- 表格主题 -->
77+
<form class="info-main" autocomplete="off">
78+
<!-- <div class="info-main"> -->
79+
<!-- 序号<input type="text" class="num" name="num"><br /><br /> -->
80+
<div class="table_td">学号</div><input type="text" class="num2" name="num2"><br /><br />
81+
<div class="table_td">姓名</div><input type="text" class="uname" name="uname"><br /><br />
82+
<div class="table_td">学院</div><input type="text" class="xy" name="xy"><br /><br />
83+
<div class="table_td">专业</div><input type="text" class="zy" name="zy"><br /><br />
84+
<div class="table_td">年级</div><input type="text" class="grade" name="grade"><br /><br />
85+
<div class="table_td">班级</div><input type="text" class="class1" name="class1"><br /><br />
86+
<div class="table_td">年龄</div><input type="text" class="age" name="age">
87+
<!-- </div> -->
88+
<!-- 表格底部按钮 -->
89+
<div class="info-button">
90+
<!-- <button class="info-button-cancel">取消</button> -->
91+
<button class="info-button-submit">提交</button>
92+
</div>
93+
</form>
94+
95+
96+
</div>
97+
<!-- 底部信息栏 -->
98+
<div class="btm-info">
99+
<span class="show-info">
100+
<p></p>
101+
<p>1</p>
102+
<P>页,共</P>
103+
<p>0</p>
104+
<p>条,(每页显示10条)</p>
105+
</span>
106+
<button class="btn-prev">上一页</button>
107+
<button class="btn-next">下一页</button>
108+
</div>
109+
<!-- //查看学生信息 -->
110+
<div id="examineBlock">
111+
<div id="examineHeader">查看学生信息</div>
112+
<div id="examineMain">
113+
<table id="examineMessageTable">
114+
<tr>
115+
<td class="examineTableTd1">学号</td>
116+
<td class="examineTableTd2"><input type="text" id="stuId3" readonly="readonly" /></td>
117+
</tr>
118+
<tr>
119+
<td class="examineTableTd1">姓名</td>
120+
<td class="examineTableTd2"><input type="text" id="name3" readonly="readonly" /></td>
121+
</tr>
122+
<tr>
123+
<td class="examineTableTd1">学院</td>
124+
<td class="examineTableTd2"><input type="text" id="colg3" readonly="readonly" /></td>
125+
</tr>
126+
<tr>
127+
<td class="examineTableTd1">专业</td>
128+
<td class="examineTableTd2"><input type="text" id="profession3" readonly="readonly" /></td>
129+
</tr>
130+
<tr>
131+
<td class="examineTableTd1">年级</td>
132+
<td class="examineTableTd2"><input type="text" id="grade3" readonly="readonly" /></td>
133+
</tr>
134+
<tr>
135+
<td class="examineTableTd1">班级</td>
136+
<td class="examineTableTd2"><input type="text" id="stuClass3" readonly /></td>
137+
</tr>
138+
<tr>
139+
<td class="examineTableTd1">年龄</td>
140+
<td class="examineTableTd2"><input type="text" id="age3" readonly /></td>
141+
</tr>
142+
</table>
143+
</div>
144+
<div style="text-align: right; height: 35px; padding-top: 5px; padding-right: 20px">
145+
<button id="examineCancel" onclick="examineCancel()">取消</button>
146+
</div>
147+
</div>
148+
</div>
149+
<script src="script.js"></script>
150+
</body>
151+
152+
</html>

script.js

+203
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
2+
// 新增按钮
3+
const btn_add = document.querySelector('.btn-add')
4+
const info = document.querySelector('.info')
5+
btn_add.addEventListener('click', function () {
6+
info.style.visibility = 'visible'
7+
})
8+
//取消按钮
9+
// const info_btn_cancel = document.querySelector('.info-button-cancel')
10+
// info_btn_cancel.addEventListener('click', function () {
11+
// info.style.visibility = 'hidden'
12+
// })
13+
14+
15+
const tbody = document.querySelector('tbody')
16+
const info_main = document.querySelector('.info-main')
17+
//新增信息
18+
const arr = []
19+
const info_btn_submit = document.querySelector('.info-button-submit')
20+
info_btn_submit.addEventListener('click', function (e) {
21+
// info_main.addEventListener('submit', function (e) {
22+
e.preventDefault()
23+
const num2 = document.querySelector('.num2')
24+
const uname = document.querySelector('.uname')
25+
const xy = document.querySelector('.xy')
26+
const zy = document.querySelector('.zy')
27+
const grade = document.querySelector('.grade')
28+
const class1 = document.querySelector('.class1')
29+
const age = document.querySelector('.age')
30+
//表单验证
31+
//获取所有带有name属性的元素
32+
// const items = document.querySelectorAll('[name]')
33+
// // console.log(items);
34+
35+
// for (let i = 0; i < items.length; i++) {
36+
// if (items[i].value === '') {
37+
// return alert('输入内容不能为空')
38+
// }
39+
// }
40+
41+
const obj = {
42+
stuId: arr.length + 1,
43+
num2: num2.value,
44+
uname: uname.value,
45+
xy: xy.value,
46+
zy: zy.value,
47+
grade: grade.value,
48+
class1: class1.value,
49+
age: age.value,
50+
51+
}
52+
arr.push(obj)
53+
// stuId.value = ''
54+
num2.value = ''
55+
uname.value = ''
56+
xy.value = ''
57+
zy.value = ''
58+
grade.value = ''
59+
class1.value = ''
60+
age.value = ''
61+
console.log(arr);
62+
render()
63+
info.style.visibility = 'hidden'
64+
65+
// })
66+
})
67+
// info_main.addEventListener('submit', function (e) {
68+
// e.preventDefault()
69+
// const num2 = document.querySelector('.num2')
70+
// const uname = document.querySelector('.uname')
71+
// const xy = document.querySelector('.xy')
72+
// const zy = document.querySelector('.zy')
73+
// const grade = document.querySelector('.grade')
74+
// const class1 = document.querySelector('.class1')
75+
// const age = document.querySelector('.age')
76+
77+
// const obj = {
78+
// stuId: arr.length + 1,
79+
// num2: num2.value,
80+
// uname: uname.value,
81+
// xy: xy.value,
82+
// zy: zy.value,
83+
// grade: grade.value,
84+
// class1: class1.value,
85+
// age: age.value,
86+
87+
// }
88+
// arr.push(obj)
89+
// num2.value = ''
90+
// uname.value = ''
91+
// xy.value = ''
92+
// zy.value = ''
93+
// grade.value = ''
94+
// class1.value = ''
95+
// age.value = ''
96+
// // console.log(arr);
97+
// render()
98+
99+
// })
100+
function render() {
101+
tbody.innerHTML = ''
102+
for (let i = 0; i < arr.length; i++) {
103+
const tr = document.createElement('tr')
104+
tr.innerHTML = `
105+
<th><input type="checkbox" class="check-sg"></th>
106+
<th>${arr[i].stuId}</th>
107+
<th>${arr[i].num2}</th>
108+
<th>${arr[i].uname}</th>
109+
<th>${arr[i].xy}</th>
110+
<th>${arr[i].zy}</th>
111+
<th>${arr[i].grade}</th>
112+
<th>${arr[i].class1}</th>
113+
<th>${arr[i].age}</th>
114+
<th>
115+
<a href="javascript:">查看</a>
116+
<a href="javascript:" data-id=${i}>删除</a>
117+
</th>
118+
`
119+
if (i % 2 === 1) {
120+
tr.classList.add('tr1')
121+
}
122+
else {
123+
tr.classList.add('tr2')
124+
}
125+
tbody.appendChild(tr)
126+
}
127+
}
128+
129+
130+
//删除操作:最右侧操作
131+
tbody.addEventListener('click', function (e) {
132+
if (e.target.tagName === 'A') {
133+
if (e.target.textContent === '删除') {
134+
// console.log(e.target);
135+
// console.log(e.target.dataset.id);
136+
arr.splice(e.target.dataset.id, 1);
137+
// console.log(arr);
138+
render();
139+
}
140+
}
141+
})
142+
//删除操作:最左侧操作
143+
// 当点击 tr 中的第一个 input 时
144+
const dataId1 = 0
145+
tbody.addEventListener('click', function (e) {
146+
if (e.target.tagName === 'INPUT' && e.target.classList.contains('check-sg')) {
147+
// 获取与 input 相关的 tr
148+
const tr = e.target.closest('tr');
149+
150+
// 从 tr 中获取 “删除” 链接的 data-id
151+
const deleteLink = tr.querySelector('a[data-id]');
152+
if (deleteLink) {
153+
const dataId = deleteLink.getAttribute('data-id');
154+
// console.log(dataId);
155+
dataId1 = dataId
156+
}
157+
}
158+
});
159+
160+
//删除按钮
161+
const btn_delete = document.querySelector('.btn-delete')
162+
btn_delete.addEventListener('click', function () {
163+
arr.splice(dataId1, 1)
164+
render()
165+
})
166+
167+
//全选
168+
const checkAll = document.querySelector('.check-all')
169+
const cks = document.querySelectorAll('.check-sg')
170+
checkAll.addEventListener('change', function () {
171+
for (let i = 0; i < cks.length; i++) {
172+
cks[i].checked = checkAll.checked
173+
}
174+
})
175+
//反选
176+
for (let i = 0; i < cks.length; i++) {
177+
cks[i].addEventListener('click', function () {
178+
checkAll.checked = document.querySelectorAll('.check-sg:checked').length === cks.length
179+
})
180+
}
181+
182+
//查看学生信息
183+
const examine = document.querySelector('#examineCancel')
184+
const examineBlock = document.querySelector('#examineBlock')
185+
examine.addEventListener('click', function () {
186+
examineBlock.style.display = 'none'
187+
})
188+
//点击查看按钮
189+
tbody.addEventListener('click', function (e) {
190+
if (e.target.tagName === 'A') {
191+
if (e.target.textContent === '查看') {
192+
// console.log(e.target);
193+
// console.log(e.target.dataset.id);
194+
// arr.splice(e.target.dataset.id, 1);
195+
// console.log(arr);
196+
// render();
197+
// console.log(e.target.textContent);
198+
examineBlock.style.display = 'block'
199+
200+
201+
}
202+
}
203+
})

0 commit comments

Comments
 (0)