chenxi 8 months ago
parent 97cc4c35c5
commit 57e5e535c5

@ -1,49 +1,76 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 上述两行是JSP页面相关指令
第一行用于设置该JSP页面的内容类型为text/html即HTML格式页面同时指定字符编码为UTF-8表明页面使用Java语言来处理逻辑。
第二行引入了JSTLJavaServer Pages Standard Tag Library核心标签库定义前缀为“c”方便后续在页面中使用JSTL提供的标签进行动态数据处理比如循环遍历、条件判断等操作 -->
<html>
<head>
<title>查询学生</title>
<!-- 设置HTML页面的标题为“查询学生”此标题会显示在浏览器的标题栏让用户明确该页面的主要功能 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入layui框架的样式表文件通过相对路径从当前页面所在目录下的css文件夹中查找应用layui框架提供的样式用于页面布局、组件美化等使页面呈现layui框架特有的外观风格 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的样式表文件style.css同样采用相对路径引用目的是添加符合特定需求的个性化页面样式对页面显示效果做进一步定制 -->
<script src="./layui.js"></script>
<!-- 引入layui框架的JavaScript脚本文件从当前页面所在目录获取该文件layui的JavaScript脚本为页面提供众多交互功能以及各种组件支持例如实现菜单交互、页面元素动态展示等功能 -->
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<!-- 从CDN内容分发网络引入jQuery库的最小化版本jQuery是常用的JavaScript库能简化页面中对DOM元素的操作、事件处理以及实现各种动画效果等方便开发人员编写JavaScript代码实现页面交互逻辑 -->
</head>
<body class="layui-layout-body" style="background-color: #F2F2F2">
<!-- 为页面主体body设置类名“layui-layout-body”同时将背景颜色设定为浅灰色#F2F2F2该类名通常与layui框架的布局样式相关联按照其框架规范来构建页面整体外观 -->
<jsp:include page="/filterLogin.jsp"></jsp:include>
<!-- 通过JSP的include指令包含名为filterLogin.jsp的页面内容一般这个页面用于处理用户登录相关的验证逻辑或者展示登录相关的界面元素比如登录表单等以此确保只有登录后的用户能够访问后续页面内容 -->
<jsp:include page="/WEB-INF/admin/aHeader.jsp"></jsp:include>
<!-- 包含位于WEB-INF/admin目录下的aHeader.jsp页面通常用于构建页面的头部区域可能包含如网站logo、导航栏等常见的头部元素起到统一页面头部布局的作用 -->
<jsp:include page="/WEB-INF/admin/adminNav.jsp"></jsp:include>
<!-- 再次使用JSP的include指令包含WEB-INF/admin目录下的adminNav.jsp页面此页面一般用来展示管理员端特有的导航菜单内容便于用户在不同功能模块间进行切换操作 -->
<div class="layui-layout layui-layout-admin">
<!-- 创建一个div元素并赋予其两个类名“layui-layout”和“layui-layout-admin”这是layui框架中用于定义页面整体布局结构的特定类名遵循layui框架的布局规范来划分页面不同区域例如头部、主体、侧边栏等具体根据框架设定 -->
<div class="layui-body">
<!-- 在上述布局div内部再创建一个div元素类名为“layui-body”在layui框架里该区域通常用于承载页面的主要内容比如展示各类业务数据、操作按钮等 -->
<!-- 内容主体区域 -->
<div style="padding: 15px;">
<!-- 创建一个div元素并通过内联样式设置其四周内边距为15px这样做主要是为了对内部元素进行排版使页面内容看起来更规整避免显得过于紧凑或松散 -->
<span class="layui-breadcrumb">
<a href="">管理员</a>
<a href="">学生管理</a>
<a><cite>查询学生</cite></a>
</span>
<!-- 创建一个layui框架提供的面包屑导航组件通过一系列超链接a标签展示当前页面在整个系统中的层级路径这里展示了从“管理员”进入“学生管理”再到“查询学生”页面但目前超链接的href属性大多为空后续可能需要完善具体跳转地址以实现页面导航功能 -->
<form style="padding-top: 20px;" action="${pageContext.request.contextPath}/findStudentByPageServlet" method="post">
<!-- 创建一个表单form元素通过内联样式设置顶部内边距为20px设置表单的action属性即表单提交的目标地址为名为findStudentByPageServlet的Servlet通过EL表达式动态获取上下文路径拼接而成提交方式为POST用于收集用户输入的查询条件并提交给后端进行学生信息查询操作 -->
<div class="layui-form-item">
<!-- 创建一个layui框架下用于表示表单项目form-item的div容器layui框架会依据这个结构来对内部的表单元素进行布局和样式处理 -->
<div class="layui-inline">
<!-- 创建一个内联的div容器在layui表单布局中它用于让内部的表单元素在同一行显示 -->
<label class="layui-form-label" style="width: auto;">学号</label>
<!-- 创建一个表单标签label元素用于标识后面的输入框对应的含义这里显示文本为“学号”并通过内联样式设置宽度为自适应width: auto -->
<div class="layui-input-inline">
<!-- 创建一个用于放置输入框的内联div容器在layui框架的表单布局里它控制着输入框的显示样式及宽度等 -->
<input type="tel" name="s_id" value="${condition.s_id[0]}" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框input元素类型为电话号码type: tel名称为“s_id”其值通过EL表达式从名为“condition”的对象中获取学号信息进行回显可能是上次查询输入的学号用于保留历史查询条件关闭自动完成功能autocomplete="off"并应用layui框架的输入框样式类layui-input用于让用户输入要查询的学生学号 -->
</div>
<label class="layui-form-label" style="width: auto;">姓名</label>
<div class="layui-input-inline">
<input type="text" name="s_name" value="${condition.s_name[0]}" autocomplete="off" class="layui-input">
<!-- 同样创建一个文本输入框类型为文本type: text名称为“s_name”通过EL表达式回显上次输入的姓名信息关闭自动完成功能用于让用户输入要查询的学生姓名 -->
</div>
<div class="layui-input-inline">
<button type="submit" class="layui-btn">查询</button>
<!-- 创建一个提交按钮button类型为提交type: submit应用layui框架的按钮样式类layui-btn点击该按钮会触发表单提交操作将用户在学号和姓名输入框中输入的查询条件发送到指定的Servlet进行学生信息查询 -->
<a class="layui-btn layui-btn-danger" href="javascript:void(0);" id="deleteSelectStudent">删除选中</a>
<!-- 创建一个超链接a标签应用layui框架的危险样式按钮类layui-btn layui-btn-danger表示红色警示样式按钮设置href属性为“javascript:void(0);”使其点击时不进行实际的页面跳转设置id为“deleteSelectStudent”用于后续绑定JavaScript事件实现删除选中学生信息的功能 -->
</div>
</div>
</div>
</form>
<form id="selectStudent" action="${pageContext.request.contextPath}/deleteSelectStudentServlet" method="post">
<!-- 创建另一个表单元素设置id为“selectStudent”用于标记这个表单其action属性设置为提交到名为deleteSelectStudentServlet的Servlet通过EL表达式获取上下文路径拼接而成提交方式为POST该表单主要用于批量删除选中的学生信息 -->
<table class="layui-table" lay-filter="test">
<!-- 创建一个layui框架的表格组件设置名为“test”的过滤器该过滤器可在后续JavaScript代码中用于配置表格相关交互功能例如实现表格行点击事件、数据筛选、排序等操作 -->
<thead>
<tr>
<th><input id="firstCb" type="checkbox" class="my-checkbox" name="" title="" lay-skin="primary"></th>
@ -59,10 +86,12 @@
<th>手机号</th>
<th>邮箱</th>
<th>操作</th>
<!-- 定义表格头部的列标题分别列出要展示的学生相关的各个字段如全选复选框通过一个带有特定样式和属性的input复选框实现、序号ID、学号、学院、系别、班级、姓名、性别、年龄、城市、手机号、邮箱以及操作用于进行修改、删除等相关操作 -->
</tr>
</thead>
<c:forEach items="${pb.list}" var="student" varStatus="s">
<!-- 使用JSTL的forEach标签进行循环遍历操作循环的对象是名为“pb.list”的数据集合通常是从后端传递过来的分页后的学生信息列表每次循环将当前元素赋值给变量“student”同时利用“varStatus”获取循环状态信息如当前循环次数等并赋值给变量“s” -->
<tr>
<th><input type="checkbox" class="my-checkbox" name="sid" value="${student.s_id}" title="" lay-skin="primary"></th>
<td>${s.count}</td>
@ -77,44 +106,60 @@
<td>${student.s_phone}</td>
<td>${student.s_email}</td>
<td><a class="layui-btn layui-btn-normal" href="${pageContext.request.contextPath}/updateStudentServlet?sid=${student.s_id}">修改</a><a class="layui-btn layui-btn-danger" href="javascript:deleteStudent(${student.s_id});">删除</a></td>
<!-- 在表格的每一行中通过EL表达式Expression Language如${s.count}等)分别展示对应的数据:
先创建一个复选框input类型为checkbox设置类名、名称、值以及相关样式属性用于单独选中某一行学生信息以便进行批量操作如批量删除
然后依次展示学生的序号(通过${s.count}表示当前循环次数)、学号、学院、系别、班级、姓名、性别、年龄、城市、手机号、邮箱等具体信息;
最后一列创建两个超链接a标签分别应用layui框架的不同样式按钮类一个是常规样式layui-btn layui-btn-normal用于跳转到修改学生信息的页面通过拼接学生ID参数传递给对应的Servlet另一个是危险样式layui-btn layui-btn-danger点击后会调用名为deleteStudent的JavaScript函数并传递当前学生的ID作为参数用于删除当前行对应的学生信息 -->
</tr>
</c:forEach>
</table>
</form>
<%-- <div class="layui-box layui-laypage layui-laypage-default" id="layui-laypage-1"><a href="javascript:;" class="layui-laypage-prev" data-page="3">上一页</a><a href="javascript:;" data-page="1">1</a><a href="javascript:;" data-page="2">2</a><a href="javascript:;" data-page="3">3</a><span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>4</em></span><a href="javascript:;" data-page="5">5</a><a href="javascript:;" class="layui-laypage-next" data-page="5">下一页</a></div>--%>
<ul>
<!-- 创建一个无序列表ul元素用于构建分页导航链接 -->
<c:if test="${pb.currentPage == 1}">
<a href ="javascript:return false;">
<!-- 使用JSTL的条件判断标签c:if当名为“pb”的对象中的当前页码currentPage等于1时创建一个超链接a标签设置href属性为“javascript:return false;”,使其点击时不执行实际的页面跳转,用于禁用上一页链接(因为已经是第一页了) -->
</c:if>
<c:if test="${pb.currentPage!= 1}">
<a href="${pageContext.request.contextPath}/findStudentByPageServlet?currentPage=${pb.currentPage-1}&rows=5&s_id=${condition.s_id[0]}&s_name=${condition.s_name[0]}">
<!-- 当当前页码不等于1时创建一个超链接链接地址指向名为findStudentByPageServlet的Servlet并通过EL表达式动态传递当前页码减1、每页显示行数、学号查询条件、姓名查询条件等参数用于跳转到上一页的学生信息查询结果页面 -->
</c:if>
<li class="page-li">上一页</li></a>
<!-- 创建一个列表项li元素应用“page-li”类名可能对应特定样式显示文本为“上一页”作为分页导航中的上一页按钮文本 -->
</a>
<c:forEach begin="1" end="${pb.totalPage}" var="i">
<!-- 使用JSTL的forEach标签进行循环从1开始到总页数totalPage结束每次循环变量为“i”用于生成页码导航链接 -->
<c:if test="${pb.currentPage == i}">
<a href="${pageContext.request.contextPath}/findStudentByPageServlet?currentPage=${i}&rows=5&s_id=${condition.s_id[0]}&s_name=${condition.s_name[0]}"><li class="page-li" style="background-color: #009688;border-radius: 2px;color: white;">${i}</li></a>
<!-- 当当前页码等于循环中的页码“i”时创建一个超链接链接地址同样指向findStudentByPageServlet并传递相关参数内部包含一个列表项元素应用“page-li”类名并通过内联样式设置背景颜色、边框圆角和文本颜色显示当前页码用于突出显示当前所在页码 -->
</c:if>
<c:if test="${pb.currentPage!= i}">
<a href="${pageContext.request.contextPath}/findStudentByPageServlet?currentPage=${i}&rows=5&s_id=${condition.s_id[0]}&s_name=${condition.s_name[0]}"><li class="page-li">${i}</li></a>
<!-- 当当前页码不等于循环中的页码“i”时创建类似的超链接和列表项元素只是列表项元素的样式为普通样式用于显示其他页码链接 -->
</c:if>
</c:forEach>
<c:if test="${pb.currentPage == pb.totalPage}">
<a href="javascript:return false;">
<!-- 当当前页码等于总页数时创建一个超链接设置href属性使其点击不跳转用于禁用下一页链接因为已经是最后一页了 -->
</c:if>
<c:if test="${pb.currentPage!= pb.totalPage}">
<a href="${pageContext.request.contextPath}/findStudentByPageServlet?currentPage=${pb.currentPage+1}&rows=5&s_id=${condition.s_id[0]}&s_name=${condition.s_name[0]}">
<!-- 当当前页码不等于总页数时创建超链接链接地址指向findStudentByPageServlet并传递当前页码加1等参数用于跳转到下一页的学生信息查询结果页面 -->
</c:if>
<li class="page-li">下一页</li></a>
<!-- 创建列表项元素,显示文本为“下一页”,作为分页导航中的下一页按钮文本 -->
</ul>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 0px;">
<legend>共${pb.totalCount}条记录,共${pb.totalPage}页</legend>
<!-- 创建一个字段集fieldset元素应用layui框架的相关样式类设置顶部外边距为0px内部包含一个图例legend元素通过EL表达式显示总记录数totalCount和总页数totalPage用于向用户展示学生信息查询结果的统计情况让用户清楚知晓数据的总量以及分页的情况 -->
</fieldset>
<jsp:include page="/footer.jsp"></jsp:include>
<!-- 包含名为footer.jsp的页面一般此页面用于展示页面底部的一些通用信息比如版权声明、网站相关链接、联系方式等内容 -->
</div>
</div>
</div>
@ -122,19 +167,23 @@
<script type="text/javascript">
$("#nav li:nth-child(2) dl dd:nth-child(1)").addClass("layui-this");
// 使用jQuery选择器选中页面中id为“nav”的元素下的第2个子元素li下的dl元素下的第1个dd元素并为其添加类名“layui-this”。在layui框架中添加这个类名通常意味着将对应的导航菜单项标记为当前选中状态使其呈现特定的样式比如改变颜色、加粗等以此表明当前所在页面功能模块对应的菜单选项
$("#nav li:nth-child(2)").addClass("layui-nav-itemed");
// 同样使用jQuery选择器选中页面中id为“nav”的元素下的第2个子元素li并为其添加类名“layui-nav-itemed”。在layui框架里这个类名可能用于控制导航菜单的展开或折叠状态让对应的菜单层级结构展示相应的效果方便用户查看相关的子菜单
</script>
<script>
//JavaScript代码区域
layui.use('element', function(){
var element = layui.element;
element.init();
// 使用layui框架的element模块调用其init方法进行初始化操作。在layui框架中element模块提供了很多页面元素交互相关的功能例如实现页面布局动态切换、菜单展开收起等交互效果通过调用init方法可以激活这些功能确保页面上基于element模块构建的各种UI组件能够正常工作
});
</script>
<script>
function deleteStudent(s_id) {
if (confirm("你确定删除该学生吗?")) {
location.href = "${pageContext.request.contextPath}/deleteStudentServlet?s_id=" + s_id;
// 定义一个名为deleteStudent的函数接收学生的IDs_id作为参数。在函数内部通过JavaScript的confirm函数弹出一个确认框询问用户是否确定要删除该学生。当用户点击确定即confirm函数返回true使用location.href属性将页面重定向到名为deleteStudentServlet的Servlet并通过URL拼接的方式传递要删除的学生的ID参数从而触发后端对应的删除学生信息的逻辑
}
}
@ -144,8 +193,7 @@
var cbs = document.getElementsByName("sid");
for (var i = 0; i < cbs.length; i++) {
if (cbs[i].checked) {
//有一个条目选中了,那么就不显示提示删除框
//且不提交
// 为id为“deleteSelectStudent”的元素也就是页面上的“删除选中”按钮绑定点击事件处理函数。在函数内部首先定义一个标志变量flag并初始化为false然后通过document.getElementsByName获取所有名为“sid”的元素即表格中每行学生对应的复选框接着循环遍历这些复选框当有任何一个复选框被选中即其checked属性为true将flag设置为true并跳出循环
flag = true;
break;
}
@ -154,6 +202,7 @@
if (flag) {
if (confirm("你确定要删除选中条目吗?")) {
document.getElementById("selectStudent").submit();
// 如果有复选框被选中即flag为true则再次弹出确认框询问用户是否确定要删除选中的条目。当用户确认后通过document.getElementById获取id为“selectStudent”的表单元素并调用其submit方法触发表单提交操作将选中的学生信息通过表单中复选框的name和value属性传递选中学生的ID等相关数据发送到对应的Servlet前面设置的action为deleteSelectStudentServlet以进行批量删除操作
}
}
@ -162,6 +211,7 @@
var cbs = document.getElementsByName("sid");
for (var i = 0; i < cbs.length; i++) {
cbs[i].checked = this.checked;
// 为id为“firstCb”的元素即表格头部的全选复选框绑定点击事件处理函数。在函数内部先获取所有名为“sid”的复选框元素然后循环遍历它们将每个复选框的checked属性设置为与全选复选框this表示当前点击的元素也就是“firstCb”的checked属性一致以此实现全选或全不选的功能
}
}

@ -1,28 +1,46 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 以上两行是JSP页面相关指令
第一行用于设置该JSP页面的内容类型为text/html即HTML格式页面同时指定字符编码为UTF-8表明页面使用Java语言来处理相关逻辑。
第二行引入了JSTLJavaServer Pages Standard Tag Library核心标签库定义前缀为“c”方便后续在页面中使用JSTL提供的各类标签进行动态数据处理比如循环遍历、条件判断等操作 -->
<html>
<head>
<title>可选课程</title>
<!-- 设置HTML页面的标题为“可选课程”此标题会显示在浏览器的标题栏让用户明确该页面的主要功能 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入layui框架的样式表文件通过相对路径从当前页面所在目录下的css文件夹中查找应用layui框架提供的样式用于页面布局、组件美化等使页面呈现layui框架特有的外观风格 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的样式表文件style.css同样采用相对路径引用目的是添加符合特定需求的个性化页面样式对页面显示效果做进一步定制 -->
<script src="./layui.js"></script>
<!-- 引入layui框架的JavaScript脚本文件从当前页面所在目录获取该文件layui的JavaScript脚本为页面提供众多交互功能以及各种组件支持例如实现菜单交互、页面元素动态展示等功能 -->
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<!-- 从CDN内容分发网络引入jQuery库的最小化版本jQuery是常用的JavaScript库能简化页面中对DOM元素的操作、事件处理以及实现各种动画效果等方便开发人员编写JavaScript代码实现页面交互逻辑 -->
</head>
<body class="layui-layout-body" style="background-color: #F2F2F2">
<!-- 为页面主体body设置类名“layui-layout-body”同时将背景颜色设定为浅灰色#F2F2F2该类名通常与layui框架的布局样式相关联按照其框架规范来构建页面整体外观 -->
<jsp:include page="/filterLogin.jsp"></jsp:include>
<!-- 通过JSP的include指令包含名为filterLogin.jsp的页面内容一般这个页面用于处理用户登录相关的验证逻辑或者展示登录相关的界面元素比如登录表单等以此确保只有登录后的用户能够访问后续页面内容 -->
<jsp:include page="/WEB-INF/admin/aHeader.jsp"></jsp:include>
<!-- 包含位于WEB-INF/admin目录下的aHeader.jsp页面通常用于构建页面的头部区域可能包含如网站logo、导航栏等常见的头部元素起到统一页面头部布局的作用 -->
<jsp:include page="/WEB-INF/admin/adminNav.jsp"></jsp:include>
<!-- 再次使用JSP的include指令包含WEB-INF/admin目录下的adminNav.jsp页面此页面一般用来展示管理员端特有的导航菜单内容便于用户在不同功能模块间进行切换操作 -->
<div class="layui-layout layui-layout-admin">
<!-- 创建一个div元素并赋予其两个类名“layui-layout”和“layui-layout-admin”这是layui框架中用于定义页面整体布局结构的特定类名遵循layui框架的布局规范来划分页面不同区域例如头部、主体、侧边栏等具体根据框架设定 -->
<div class="layui-body">
<!-- 在上述布局div内部再创建一个div元素类名为“layui-body”在layui框架里该区域通常用于承载页面的主要内容比如展示各类业务数据、操作按钮等 -->
<!-- 内容主体区域 -->
<div style="padding: 15px;">
<!-- 创建一个div元素并通过内联样式设置其四周内边距为15px这样做主要是为了对内部元素进行排版使页面内容看起来更规整避免显得过于紧凑或松散 -->
<span class="layui-breadcrumb">
<a href="">管理员</a>
<a href="">选课信息管理</a>
<a><cite>可选课程</cite></a>
</span>
<!-- 创建一个layui框架提供的面包屑导航组件通过一系列超链接a标签展示当前页面在整个系统中的层级路径这里展示了从“管理员”进入“选课信息管理”再到“可选课程”页面但目前超链接的href属性大多为空后续可能需要完善具体跳转地址以实现页面导航功能 -->
<span style="color: red;margin-right: 100px;float: right;">${select_msg}</span>
<!-- 创建一个<span>标签设置文本颜色为红色通过右浮动float: right使其靠右显示并设置右边距为100px内部通过EL表达式显示名为“select_msg”的变量的值可能用于在页面上显示一些与可选课程操作相关的提示信息比如课程删除成功或失败等消息 -->
<table class="layui-table" lay-filter="test">
<!-- 创建一个layui框架的表格组件设置名为“test”的过滤器该过滤器可在后续JavaScript代码中用于配置表格相关交互功能例如实现表格行点击事件、数据筛选、排序等操作 -->
<thead>
<tr>
<th>ID</th>
@ -32,10 +50,12 @@
<th>教师号</th>
<th>教师姓名</th>
<th>操作</th>
<!-- 定义表格头部的列标题分别列出要展示的可选课程相关的各个字段如序号ID、课程号、课程名、课程简介、教师号、教师姓名以及操作用于进行删除等相关操作 -->
</tr>
</thead>
<c:forEach items="${optionalcourses}" var="optionalcourse" varStatus="s">
<!-- 使用JSTL的forEach标签进行循环遍历操作循环的对象是名为“optionalcourses”的数据集合通常是从后端传递过来的可选课程信息列表每次循环将当前元素赋值给变量“optionalcourse”同时利用“varStatus”获取循环状态信息如当前循环次数等并赋值给变量“s” -->
<tr>
<td>${s.count}</td>
<td>${optionalcourse.c_id}</td>
@ -44,10 +64,14 @@
<td>${optionalcourse.t_id}</td>
<td>${optionalcourse.t_name}</td>
<td><a class="layui-btn layui-btn-danger" href="javascript:deleteCourse(${optionalcourse.c_id});">删除</a></td>
<!-- 在表格的每一行中通过EL表达式Expression Language如${s.count}等)分别展示对应的数据:
先展示序号(通过${s.count}表示当前循环次数),然后依次展示课程号、课程名、课程简介、教师号、教师姓名等具体信息;
最后一列创建一个超链接a标签应用layui框架的危险样式按钮类layui-btn layui-btn-danger表示红色警示样式按钮设置href属性为调用名为“deleteCourse”的JavaScript函数并传递当前课程的ID通过EL表达式获取当前课程对象中的课程ID即${optionalcourse.c_id})作为参数,用于实现删除当前行对应的课程信息的功能 -->
</tr>
</c:forEach>
</table>
<jsp:include page="/footer.jsp"></jsp:include>
<!-- 包含名为footer.jsp的页面一般此页面用于展示页面底部的一些通用信息比如版权声明、网站相关链接、联系方式等内容 -->
</div>
</div>
</div>
@ -55,23 +79,27 @@
<script type="text/javascript">
$("#nav li:nth-child(1) dl dd:nth-child(2)").addClass("layui-this");
// 使用jQuery选择器选中页面中id为“nav”的元素下的第1个子元素li下的dl元素下的第2个dd元素并为其添加类名“layui-this”。在layui框架中添加这个类名通常意味着将对应的导航菜单项标记为当前选中状态使其呈现特定的样式比如改变颜色、加粗等以此表明当前所在页面功能模块对应的菜单选项
$("#nav li:nth-child(1)").addClass("layui-nav-itemed");
// 同样使用jQuery选择器选中页面中id为“nav”的元素下的第1个子元素li并为其添加类名“layui-nav-itemed”。在layui框架里这个类名可能用于控制导航菜单的展开或折叠状态让对应的菜单层级结构展示相应的效果方便用户查看相关的子菜单
</script>
<script>
//JavaScript代码区域
layui.use('element', function(){
var element = layui.element;
element.init();
// 使用layui框架的element模块调用其init方法进行初始化操作。在layui框架中element模块提供了很多页面元素交互相关的功能例如实现页面布局动态切换、菜单展开收起等交互效果通过调用init方法可以激活这些功能确保页面上基于element模块构建的各种UI组件能够正常工作
});
</script>
<script>
function deleteCourse(c_id) {
if (confirm("你确定删除该学生吗?")) {
location.href = "${pageContext.request.contextPath}/doDeleteSelectCourseServlet?cid=" + c_id;
// 定义一个名为deleteCourse的函数接收课程的IDc_id作为参数。这里函数名虽然是deleteCourse暗示删除课程但函数内部确认提示文字是“你确定删除该学生吗”可能存在文本错误正常应该提示“你确定删除该课程吗”。
// 在函数内部通过JavaScript的confirm函数弹出一个确认框询问用户是否确定要执行删除操作当前文本提示的是删除学生应为删除课程。当用户点击确定即confirm函数返回true使用location.href属性将页面重定向到名为“doDeleteSelectCourseServlet”的Servlet并通过URL拼接的方式传递要删除的课程的ID参数从而触发后端对应的删除课程信息的逻辑
}
}
</script>
</body>
</html>

@ -1,27 +1,44 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 以上两行是JSP页面相关的指令
- 第一行用于设置该JSP页面的内容类型为text/html也就是表明这是一个HTML格式的页面同时指定字符编码为UTF-8并且告知服务器此页面使用Java语言来处理相关逻辑。
- 第二行引入了JSTLJavaServer Pages Standard Tag Library核心标签库定义其前缀为“c”后续就能通过这个前缀方便地使用JSTL提供的各类标签例如用于循环遍历、条件判断等操作的标签以此在JSP页面中实现动态数据处理 -->
<html>
<head>
<title>选课列表</title>
<!-- 设置当前HTML页面的标题为“选课列表”这个标题会显示在浏览器的标题栏位置让用户直观地知晓该页面的主要功能 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入layui框架的样式表文件通过相对路径从当前页面所在目录下的css文件夹中查找来应用layui框架所提供的样式可用于对页面进行布局排版、美化页面中的各个组件等使得页面呈现出layui框架特有的外观风格 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的样式表文件style.css同样采用相对路径的方式进行引用其目的是添加符合特定业务需求的个性化页面样式对页面显示效果做进一步的定制 -->
<script src="./layui.js"></script>
<!-- 引入layui框架的JavaScript脚本文件从当前页面所在的目录获取该文件layui框架的脚本文件能够为页面提供众多交互功能以及各种各样的组件支持比如实现菜单的交互效果、页面元素的动态展示等功能 -->
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<!-- 从CDN内容分发网络引入jQuery库的最小化版本jQuery是在Web开发中常用的JavaScript库它可以简化页面中对DOM文档对象模型元素的操作、方便进行事件处理以及实现各种动画效果等便于开发人员编写JavaScript代码来实现页面的交互逻辑 -->
</head>
<body class="layui-layout-body" style="background-color: #F2F2F2">
<!-- 为页面主体body设置类名“layui-layout-body”同时通过内联样式将背景颜色设定为浅灰色#F2F2F2这里的类名大概率是与layui框架的布局样式相关联按照其框架所规定的规范来构建页面整体的外观样式 -->
<jsp:include page="/filterLogin.jsp"></jsp:include>
<!-- 通过JSP的include指令包含名为filterLogin.jsp的页面内容通常这个页面是用于处理用户登录相关的验证逻辑或者展示登录相关的一些界面元素比如登录表单等通过这种方式来保证只有已经登录后的用户才能够访问后续的页面内容 -->
<jsp:include page="/WEB-INF/admin/aHeader.jsp"></jsp:include>
<!-- 包含位于WEB-INF/admin目录下的aHeader.jsp页面一般来说这个页面是用于构建页面的头部区域可能会包含像网站logo、导航栏等常见的头部元素起到统一页面头部布局的作用 -->
<jsp:include page="/WEB-INF/admin/adminNav.jsp"></jsp:include>
<!-- 再次使用JSP的include指令包含WEB-INF/admin目录下的adminNav.jsp页面通常这个页面是用来展示管理员端特有的导航菜单内容方便用户在不同的功能模块之间进行切换操作 -->
<div class="layui-layout layui-layout-admin">
<!-- 创建一个div元素并赋予它两个类名“layui-layout”和“layui-layout-admin”这通常是layui框架中用于定义页面整体布局结构的特定类名会遵循layui框架的布局规范来划分页面的不同区域例如划分出头部、主体内容区域、侧边栏等具体的划分取决于layui框架自身的设定 -->
<div class="layui-body">
<!-- 在上述带有布局类名的div内部再创建一个div元素其类名为“layui-body”在layui框架里这个区域一般是用于承载页面的主要内容比如展示各类业务相关的数据、放置操作按钮等 -->
<!-- 内容主体区域 -->
<div style="padding: 15px;">
<!-- 创建一个新的div元素并通过内联样式设置它的四周内边距都为15px这样做的主要目的是对内部的元素进行合理的排版使得页面内容看起来更加规整避免出现过于紧凑或者松散的情况 -->
<span class="layui-breadcrumb">
<a href="">管理员</a>
<a href="">选课信息管理</a>
<a><cite>选课列表</cite></a>
</span>
<!-- 创建一个layui框架提供的面包屑导航组件通过一系列的超链接a标签来展示当前页面在整个系统中的层级路径这里展示了从“管理员”这个大的功能入口进入到“选课信息管理”模块再进一步进入到当前的“选课列表”页面不过目前这些超链接的href属性大多为空后续可能需要完善具体的跳转地址以便真正实现页面之间的导航功能 -->
<table class="layui-table" lay-filter="test">
<!-- 创建一个layui框架的表格组件并且设置了名为“test”的过滤器这个过滤器可以在后续的JavaScript代码中用于配置表格相关的交互功能例如实现表格行的点击事件、对表格数据进行筛选、排序等操作 -->
<thead>
<tr>
<th>ID</th>
@ -33,10 +50,12 @@
<th>教师号</th>
<th>教师</th>
<th>分数</th>
<!-- 定义表格头部的列标题分别列出了要展示的选课相关信息的各个字段依次为序号ID、学号、学生姓名、课程号、课程名、课程简介、教师号、教师姓名以及课程分数等 -->
</tr>
</thead>
<c:forEach items="${selectcourses}" var="selectcourse" varStatus="s">
<!-- 使用JSTL的forEach标签进行循环遍历操作循环的对象是名为“selectcourses”的数据集合通常是从后端传递过来的已经选了课的相关信息列表每次循环会将当前元素赋值给变量“selectcourse”同时利用“varStatus”获取循环的状态信息例如当前循环的次数等并赋值给变量“s” -->
<tr>
<td>${s.count}</td>
<td>${selectcourse.s_id}</td>
@ -47,10 +66,14 @@
<td>${selectcourse.t_id}</td>
<td>${selectcourse.t_name}</td>
<td>${selectcourse.score}</td>
<!-- 在表格的每一行中通过EL表达式Expression Language像${s.count}等这种写法就是EL表达式分别展示对应的选课数据
- 首先展示序号(通过${s.count}表示当前循环的次数也就是从1开始的行号
- 然后依次展示选课记录中包含的学号、学生姓名、课程号、课程名、课程简介、教师号、教师姓名以及课程分数等具体信息。 -->
</tr>
</c:forEach>
</table>
<jsp:include page="/footer.jsp"></jsp:include>
<!-- 包含名为footer.jsp的页面一般这个页面是用于展示页面底部的一些通用信息比如版权声明、网站相关链接、联系方式等内容 -->
</div>
</div>
</div>
@ -58,16 +81,18 @@
<script type="text/javascript">
$("#nav li:nth-child(1) dl dd:nth-child(1)").addClass("layui-this");
// 使用jQuery选择器选中页面中id为“nav”的元素下的第1个子元素li下的dl元素下的第1个dd元素并为其添加类名“layui-this”。在layui框架中添加这个类名通常意味着将对应的导航菜单项标记为当前选中状态使其呈现出特定的样式例如改变颜色、加粗等以此来表明当前所在页面功能模块对应的菜单选项。
$("#nav li:nth-child(1)").addClass("layui-nav-itemed");
// 同样使用jQuery选择器选中页面中id为“nav”的元素下的第1个子元素li并为其添加类名“layui-nav-itemed”。在layui框架里这个类名可能用于控制导航菜单的展开或折叠状态让对应的菜单层级结构展示出相应的效果方便用户查看相关的子菜单内容。
</script>
<script>
//JavaScript代码区域
layui.use('element', function(){
var element = layui.element;
element.init();
// 使用layui框架的element模块调用其init方法进行初始化操作。在layui框架中element模块提供了很多与页面元素交互相关的功能例如可以实现页面布局的动态切换、菜单的展开收起等交互效果通过调用init方法能够激活这些功能确保页面上基于element模块构建的各种UI组件都能够正常工作。
});
</script>
</body>
</html>

@ -1,42 +1,64 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 以上两行是JSP页面相关的指令
第一行用于设置该JSP页面的内容类型为text/html即HTML格式页面同时指定字符编码为UTF-8并且表明页面使用Java语言来处理相关逻辑。
第二行引入了JSTLJavaServer Pages Standard Tag Library核心标签库定义其前缀为“c”后续就可以通过这个前缀使用JSTL提供的各类标签例如用于循环遍历、条件判断等操作的标签方便在JSP页面中进行动态数据处理 -->
<html>
<head>
<title>修改学生信息</title>
<!-- 设置当前HTML页面的标题为“修改学生信息”此标题会显示在浏览器的标题栏中让用户直观知晓页面的主要功能 -->
<link rel="stylesheet" href="./css/layui.css">
<!-- 引入layui框架的样式表文件通过相对路径从当前页面所在目录下的css文件夹中查找来应用layui框架所提供的样式可用于页面布局、组件美化等使页面呈现出特定的外观风格 -->
<link rel="stylesheet" href="./css/style.css">
<!-- 引入自定义的样式表文件style.css同样采用相对路径引用用于添加符合特定需求的个性化页面样式对页面显示效果做进一步定制 -->
<script src="./layui.js"></script>
<!-- 引入layui框架的JavaScript脚本文件从当前页面所在目录获取该文件layui脚本为页面提供众多交互功能以及各种组件支持比如实现菜单交互、页面元素动态展示等 -->
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<!-- 从CDN内容分发网络引入jQuery库的最小化版本jQuery是常用的JavaScript库能简化页面中对DOM元素的操作、事件处理以及实现各种动画效果等方便开发人员编写JavaScript代码来实现页面交互逻辑 -->
</head>
<body class="layui-layout-body" style="background-color: #F2F2F2">
<!-- 为页面主体body设置类名“layui-layout-body”同时将背景颜色设定为浅灰色#F2F2F2这里的类名大概率与layui框架的布局样式相关联按照其框架规范来构建页面整体外观 -->
<jsp:include page="/filterLogin.jsp"></jsp:include>
<!-- 通过JSP的include指令包含名为filterLogin.jsp的页面内容通常这个页面用于处理用户登录相关的验证逻辑或者展示登录相关的界面元素比如登录表单等以此保证只有登录后的用户可访问后续页面内容 -->
<jsp:include page="/WEB-INF/admin/aHeader.jsp"></jsp:include>
<!-- 包含位于WEB-INF/admin目录下的aHeader.jsp页面一般用于构建页面的头部区域可能包含网站logo、导航栏等常见的头部元素起到统一页面头部布局的作用 -->
<jsp:include page="/WEB-INF/admin/adminNav.jsp"></jsp:include>
<!-- 再次使用JSP的include指令包含WEB-INF/admin目录下的adminNav.jsp页面通常用来展示管理员端特有的导航菜单内容便于用户在不同功能模块间进行切换操作 -->
<div class="layui-layout layui-layout-admin">
<!-- 创建一个div元素并赋予其两个类名“layui-layout”和“layui-layout-admin”这一般是layui框架中用于定义页面整体布局结构的特定类名遵循layui框架的布局规范来划分页面不同区域 -->
<div class="layui-body">
<!-- 在上述布局div内部再创建一个div元素类名为“layui-body”在layui框架里该区域通常用于承载页面的主要内容例如展示各类业务数据、操作按钮等 -->
<!-- 内容主体区域 -->
<div style="padding: 15px;">
<!-- 新建一个div元素并通过内联样式设置其四周内边距为15px主要用于对内部元素进行排版让页面内容看起来更规整避免显得过于紧凑或松散 -->
<span class="layui-breadcrumb">
<a href="">管理员</a>
<a href="">学生管理</a>
<a><cite>修改学生信息</cite></a>
</span>
<!-- 创建一个layui框架提供的面包屑导航组件通过一系列超链接a标签展示当前页面在整个系统中的层级路径这里展示了从“管理员”进入“学生管理”再到“修改学生信息”页面但超链接的href属性为空可能后续需完善具体跳转地址以实现页面导航功能 -->
<form class="layui-form" action="${pageContext.request.contextPath}/updateStudentInfoServlet" style="padding-top: 50px" method="post">
<!-- 创建一个layui框架的表单form设置其提交的目标地址为名为updateStudentInfoServlet的Servlet通过EL表达式动态获取上下文路径拼接而成通过内联样式设置顶部内边距为50px提交方式为POST用于收集用户输入的修改后的学生信息并提交给后端进行信息更新操作 -->
<div class="layui-form-item">
<!-- 创建一个layui框架下表单项目form-item的div容器layui框架通常会依据这个结构来对内部的表单元素进行布局和样式处理 -->
<label class="layui-form-label">学号</label>
<!-- 创建一个表单标签label元素用于标识后面的输入框对应的含义这里显示为“学号” -->
<div class="layui-input-block">
<!-- 创建一个用于放置输入框的div容器在layui框架的表单布局里控制输入框的显示样式 -->
<input type="text" readonly="readonly" name="student-id" value="${student.s_id}" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框input元素类型为文本type: text设置为只读readonly="readonly"名称为“student-id”其值通过EL表达式从名为“student”的对象中获取可能是从后台查询出当前要修改信息的学生的学号进行回显关闭自动完成功能autocomplete="off"并应用layui框架的输入框样式类layui-input这里用于展示学号但不允许用户修改 -->
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">学院</label>
<div class="layui-input-block">
<select name="selectCollege">
<!-- 创建一个下拉选择框select元素名称为“selectCollege”用于让用户选择学生所属的学院 -->
<option value="${student.s_college}" selected>${student.s_college}</option>
<!-- 创建一个默认选中的选项option其值和显示文本都通过EL表达式获取当前学生所属学院信息进行回显设置为默认选中selected表示当前学生已有的学院信息 -->
<c:forEach items="${collegeLists}" var="collegeList">
<option value="${collegeList.college}">${collegeList.college}</option>
<!-- 使用JSTL的forEach标签进行循环遍历操作循环的对象是名为“collegeLists”的数据集合通常是从后端获取的所有学院信息列表每次循环将当前元素赋值给变量“collegeList”并创建一个选项元素其值和显示文本都设置为当前学院信息用于展示可选择的其他学院选项 -->
</c:forEach>
</select>
</div>
@ -45,9 +67,12 @@
<label class="layui-form-label">系别</label>
<div class="layui-input-block">
<select name="selectDepartment" lay-search>
<!-- 创建一个下拉选择框名称为“selectDepartment”并设置了lay-search属性在layui框架中可能用于开启搜索功能方便在选项较多时快速查找用于让用户选择学生所属的系别 -->
<option value="${student.s_department}" selected>${student.s_department}</option>
<!-- 创建一个默认选中的选项通过EL表达式获取当前学生所属系别信息进行回显并设置为默认选中展示当前学生已有的系别 -->
<c:forEach items="${departmentLists}" var="departmentList">
<option>${departmentList.department}</option>
<!-- 同样使用forEach标签循环遍历名为“departmentLists”的系别信息集合每次循环创建一个选项元素显示文本为当前系别信息用于展示可选择的其他系别选项 -->
</c:forEach>
</select>
</div>
@ -56,9 +81,12 @@
<label class="layui-form-label">班级</label>
<div class="layui-input-block">
<select name="selectClass" lay-search>
<!-- 创建一个下拉选择框名称为“selectClass”设置lay-search属性用于让用户选择学生所在的班级 -->
<option value="${student.s_class}" selected>${student.s_class}</option>
<!-- 创建一个默认选中的选项通过EL表达式获取当前学生所在班级信息进行回显并设置为默认选中展示当前学生已有的班级 -->
<c:forEach items="${classLists}" var="classList">
<option>${classList.cclass}</option>
<!-- 使用forEach标签循环遍历名为“classLists”的班级信息集合每次循环创建一个选项元素显示文本为当前班级信息用于展示可选择的其他班级选项 -->
</c:forEach>
</select>
</div>
@ -67,6 +95,7 @@
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="student-name" id="student-name" value="${student.s_name}" placeholder="" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框类型为文本名称为“student-name”设置了id为“student-name”方便后续通过JavaScript操作该元素其值通过EL表达式获取当前学生姓名信息进行回显关闭自动完成功能用于让用户修改学生的姓名信息 -->
</div>
</div>
<div class="layui-form-item">
@ -78,24 +107,28 @@
<div class="layui-input-block">
<input type="radio" name="student-sex" id="idsex" value="男" title="男">
<input type="radio" name="student-sex" id="idsex2" value="女" title="女">
<!-- 创建两个单选按钮input类型为radio它们的名称都为“student-sex”表示属于同一组单选选项同一组单选按钮的名称要相同分别设置不同的id、值和标题属性用于让用户选择学生的性别 -->
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">年龄</label>
<div class="layui-input-block">
<input type="text" name="student-age" id="student-age" value="${student.s_age}" placeholder="" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框用于输入学生的年龄信息名称为“student-age”通过EL表达式回显当前学生年龄关闭自动完成功能 -->
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">电话</label>
<div class="layui-input-block">
<input type="text" name="student-phone" id="student-phone" value="${student.s_phone}" placeholder="" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框用于输入学生的电话号码信息名称为“student-phone”回显当前学生电话号码关闭自动完成功能 -->
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="text" name="student-email" id="student-email" value="${student.s_email}" placeholder="" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框用于输入学生的邮箱信息名称为“student-email”回显当前学生邮箱地址关闭自动完成功能 -->
</div>
</div>
</div>
@ -103,18 +136,23 @@
<label class="layui-form-label">城市</label>
<div class="layui-input-block">
<input type="text" name="student-address" id="student-address" value="${student.s_address}" placeholder="请输入你所在的省市" autocomplete="off" class="layui-input">
<!-- 创建一个文本输入框用于输入学生所在城市信息名称为“student-address”回显当前学生城市信息设置了提示性的占位符placeholder关闭自动完成功能 -->
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="formDemo">修改</button>
<!-- 创建一个提交按钮button应用layui框架的按钮样式类layui-btn设置其为可提交表单lay-submit并通过lay-filter属性设置一个名为“formDemo”的过滤器点击该按钮会触发表单提交操作将用户修改后的学生信息发送到指定的Servlet -->
<button class="layui-btn layui-btn-primary" id="inforeset">重置</button>
<!-- 创建一个按钮应用layui框架的主要样式类layui-btn layui-btn-primary表示基础样式按钮设置id为“inforeset”用于后续绑定JavaScript事件实现重置表单的功能 -->
<span style="padding-left: 20px;">${update_msg}</span>
<!-- 通过EL表达式显示名为“update_msg”的变量的值可能用于在页面上显示一些与学生信息更新操作相关的提示信息比如更新成功或失败的消息等 -->
</div>
</div>
</form>
<jsp:include page="/footer.jsp"></jsp:include>
<!-- 包含名为footer.jsp的页面一般用于展示页面底部的一些通用信息比如版权声明、网站相关链接、联系方式等内容 -->
</div>
</div>
</div>
@ -122,21 +160,25 @@
<script type="text/javascript">
$("#nav li:nth-child(2) dl dd:nth-child(2)").addClass("layui-this");
// 使用jQuery选择器选中页面中id为“nav”的元素下的第2个子元素li下的dl元素下的第2个dd元素并为其添加类名“layui-this”在layui框架中添加这个类名通常意味着将对应的导航菜单项标记为当前选中状态使其呈现特定的样式如改变颜色、加粗等以此表明当前所在页面功能模块对应的菜单选项
$("#nav li:nth-child(2)").addClass("layui-nav-itemed");
// 同样用jQuery选择器选中页面中id为“nav”的元素下的第2个子元素li并为其添加类名“layui-nav-itemed”在layui框架里这个类名可能用于控制导航菜单的展开或折叠状态让对应的菜单层级结构展示相应效果方便用户查看相关子菜单
$("#hidden-update").removeAttr("hidden");
// 通过jQuery选择器选中id为“hidden-update”的元素可能是一个隐藏的元素具体要看页面其他部分的定义并移除其“hidden”属性使其变为可见状态如果原本是隐藏的话不过这里不清楚“hidden-update”元素具体用途可能与页面特定功能相关
</script>
<script>
//JavaScript代码区域
layui.use('element', function(){
var element = layui.element;
element.init();
// 使用layui框架的element模块调用其init方法进行初始化操作。在layui框架中element模块提供了很多页面元素交互相关的功能例如实现页面布局动态切换、菜单展开收起等交互效果通过调用init方法可激活这些功能确保页面上基于element模块构建的各种UI组件能正常工作
});
</script>
<script>
//Demo
layui.use('form', function(){
// 使用layui框架的form模块后续可以在这个回调函数内部编写与表单相关的交互逻辑代码不过目前这里没有具体内容可能是预留的用于进一步开发表单验证、提交等相关功能的地方
});
</script>
<script>
@ -144,12 +186,15 @@
if (sex == '男') {
$("#idsex").attr("checked","checked");
$("#idsex2").removeAttr("checked");
// 通过EL表达式获取名为“student”的对象中的学生性别信息s_sex赋值给变量sex然后进行条件判断如果性别是“男”则使用jQuery的attr方法为id为“idsex”的单选按钮即代表男性的单选按钮设置“checked”属性为“checked”表示选中该按钮同时移除另一个代表女性的单选按钮id为“idsex2”的“checked”属性确保只有代表“男”性的单选按钮处于选中状态实现根据已有学生信息回显性别选项的功能 -->
} else if (sex == '女') {
$("#idsex2").attr("checked","checked");
$("#idsex").removeAttr("checked");
// 如果性别是“女”则使用jQuery的attr方法为id为“idsex2”的单选按钮即代表女性的单选按钮设置“checked”属性为“checked”表示选中该按钮同时移除代表男性的单选按钮id为“idsex”的“checked”属性使代表“女”性的单选按钮处于选中状态同样是为了依据已有学生信息准确回显性别选项 -->
} else {
$("#idsex").removeAttr("checked");
$("#idsex2").removeAttr("checked");
// 如果学生性别既不是“男”也不是“女”可能是数据异常等情况则移除两个单选按钮“idsex”和“idsex2”的“checked”属性也就是让两个单选按钮都不处于选中状态保证表单的初始状态在这种特殊情况下的合理性
}
</script>
<script type="text/javascript">
@ -163,6 +208,9 @@
$("#student-email").val("");
$("#student-address").val("");
alert("已重置!");
// 这是一个jQuery的文档就绪函数当页面的DOM结构加载完成后会执行内部的代码。
// 为id为“inforeset”的元素也就是前面提到的“重置”按钮绑定点击事件处理函数。
// 在点击事件处理函数内部首先移除代表性别单选按钮“idsex”和“idsex2”的“checked”属性使其都不被选中然后将各个输入框“student-name”“student-age”“student-phone”“student-email”“student-address”的值设置为空字符串达到清空用户输入内容的效果最后通过JavaScript的alert函数弹出一个提示框显示“已重置”的提示信息告知用户表单已被重置。
});
@ -171,5 +219,3 @@
</body>
</html>

Loading…
Cancel
Save