要求1.设计网页equipmentList.html,分为上下两个部分:上方的表格元素(table)显示所有输入的设备信息,下方的表单元素(form)支持用户新增或者修改一个设备信息(注意站点名称、设备分类、设备类型和设备状态使用下拉选择框或者复选框)。要求2:用自己定义的CSS或者引用现有Web前端框架CSS对equipmentList.html的显示样式进行修饰 要求3:使用JavaScript支持新增设备信息:用户点击”新增”按钮,用户输入修改设备信息后,点击”确定”按钮,将输入设备信息新增到上方表格 要求4:使用JavaScript支持修改设备信息:用户点击”修改”超链接,下方表单显示超链接所在行的设备信息,用户修改设备信息后,点击确定按钮,将输入信息替换原来超链接所在行的设备信息。 要求5:使用JavaScript支持删除设备信息:用户点击”删除”超链接,删除超链接所在行的设备信息。 要求6:使用JavaScript对用户输入的设备信息进行验证,如果设备名称信息输入错误,精确提示用户输入错误(例如:”设备名称不能为空!”;”安装时间格式必须是yyyy-MM-dd HH:mm:ss”);

时间: 2023-07-15 21:13:48 浏览: 46
好的,这是一个比较完整的Web前端开发项目,需要用到HTML、CSS和JavaScript技术。 首先,我们需要设计页面结构,然后在页面上添加表格和表单元素。页面大致结构如下: ```html <!DOCTYPE html> <html> <head> <title>设备列表</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>设备列表</h1> <div id="equipment-list"> <table> <thead> <tr> <th>设备名称</th> <th>站点名称</th> <th>设备分类</th> <th>设备类型</th> <th>设备状态</th> <th>安装时间</th> <th>操作</th> </tr> </thead> <tbody> <!-- 这里用 JavaScript 生成表格内容 --> </tbody> </table> <form> <h2>新增/修改设备信息</h2> <label for="name">设备名称:</label> <input type="text" id="name" name="name" required><br> <label for="site">站点名称:</label> <select id="site" name="site" required> <option value="">请选择站点</option> <!-- 这里用 JavaScript 生成下拉选项 --> </select><br> <label for="category">设备分类:</label> <select id="category" name="category" required> <option value="">请选择分类</option> <!-- 这里用 JavaScript 生成下拉选项 --> </select><br> <label for="type">设备类型:</label> <select id="type" name="type" required> <option value="">请选择类型</option> <!-- 这里用 JavaScript 生成下拉选项 --> </select><br> <label for="status">设备状态:</label> <input type="checkbox" id="status" name="status" value="1">正常使用<br> <label for="install-time">安装时间:</label> <input type="text" id="install-time" name="install-time" required><br> <button type="submit" id="submit-button">确定</button> <button type="button" id="cancel-button">取消</button> </form> </div> <script src="script.js"></script> </body> </html> ``` 在页面中,我们使用了一个表格和一个表单元素。表格用来展示设备列表,表单用来新增或修改设备信息。其中,表格和表单的具体样式可以在CSS文件中进行定义。 接下来,我们需要使用JavaScript来实现页面功能。首先,我们需要定义一个设备类,用来存储和操作设备信息: ```javascript class Equipment { constructor(name, site, category, type, status, installTime) { this.name = name; this.site = site; this.category = category; this.type = type; this.status = status; this.installTime = installTime; } } ``` 然后,我们需要定义一些辅助函数,用来生成下拉选项和格式化时间: ```javascript // 生成站点名称下拉选项 function generateSiteOptions() { let options = '<option value="">请选择站点</option>'; // 这里可以根据需要从服务器获取站点列表 options += '<option value="站点1">站点1</option>'; options += '<option value="站点2">站点2</option>'; options += '<option value="站点3">站点3</option>'; return options; } // 生成设备分类下拉选项 function generateCategoryOptions() { let options = '<option value="">请选择分类</option>'; // 这里可以根据需要从服务器获取设备分类列表 options += '<option value="分类1">分类1</option>'; options += '<option value="分类2">分类2</option>'; options += '<option value="分类3">分类3</option>'; return options; } // 生成设备类型下拉选项 function generateTypeOptions() { let options = '<option value="">请选择类型</option>'; // 这里可以根据需要从服务器获取设备类型列表 options += '<option value="类型1">类型1</option>'; options += '<option value="类型2">类型2</option>'; options += '<option value="类型3">类型3</option>'; return options; } // 格式化时间 function formatTime(time) { let date = new Date(time); let year = date.getFullYear(); let month = ('0' + (date.getMonth() + 1)).slice(-2); let day = ('0' + date.getDate()).slice(-2); let hour = ('0' + date.getHours()).slice(-2); let minute = ('0' + date.getMinutes()).slice(-2); let second = ('0' + date.getSeconds()).slice(-2); return `${year}-${month}-${day} ${hour}:${minute}:${second}`; } ``` 接下来,我们需要实现页面功能。首先,我们需要获取页面元素: ```javascript const tableBody = document.querySelector('#equipment-list tbody'); const form = document.querySelector('#equipment-list form'); const nameInput = document.querySelector('#equipment-list form #name'); const siteSelect = document.querySelector('#equipment-list form #site'); const categorySelect = document.querySelector('#equipment-list form #category'); const typeSelect = document.querySelector('#equipment-list form #type'); const statusCheckbox = document.querySelector('#equipment-list form #status'); const installTimeInput = document.querySelector('#equipment-list form #install-time'); const submitButton = document.querySelector('#equipment-list form #submit-button'); const cancelButton = document.querySelector('#equipment-list form #cancel-button'); ``` 然后,我们需要定义一些函数来处理页面事件。首先是新增设备信息: ```javascript // 处理新增设备信息 function handleAddEquipment(event) { event.preventDefault(); // 检查用户输入是否合法 if (nameInput.value.trim() === '') { alert('设备名称不能为空!'); return; } if (!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(installTimeInput.value)) { alert('安装时间格式必须是yyyy-MM-dd HH:mm:ss!'); return; } // 创建新设备 const newEquipment = new Equipment( nameInput.value.trim(), siteSelect.value, categorySelect.value, typeSelect.value, statusCheckbox.checked ? 1 : 0, new Date(installTimeInput.value).getTime() ); // 将新设备添加到表格中 const row = document.createElement('tr'); row.innerHTML = ` <td>${newEquipment.name}</td> <td>${newEquipment.site}</td> <td>${newEquipment.category}</td> <td>${newEquipment.type}</td> <td>${newEquipment.status ? '正常使用' : '维修中'}</td> <td>${formatTime(newEquipment.installTime)}</td> <td> <a href="#" class="edit-link">修改</a> <a href="#" class="delete-link">删除</a> </td> `; tableBody.appendChild(row); // 清空表单 form.reset(); } submitButton.addEventListener('click', handleAddEquipment); ``` 对于新增设备信息,我们需要先检查用户输入是否合法,然后创建一个新的设备对象,并将其添加到表格中。 接下来是修改设备信息: ```javascript // 处理修改设备信息 function handleEditEquipment(event) { event.preventDefault(); // 获取需要修改的设备信息 const row = event.target.closest('tr'); const name = row.querySelector('td:nth-child(1)').textContent; const site = row.querySelector('td:nth-child(2)').textContent; const category = row.querySelector('td:nth-child(3)').textContent; const type = row.querySelector('td:nth-child(4)').textContent; const status = row.querySelector('td:nth-child(5)').textContent === '正常使用'; const installTime = new Date(row.querySelector('td:nth-child(6)').textContent).toLocaleString('zh-CN', { hour12: false }); // 填充表单 nameInput.value = name; siteSelect.value = site; categorySelect.value = category; typeSelect.value = type; statusCheckbox.checked = status; installTimeInput.value = installTime; // 替换表格中的设备信息 function handleSaveEquipment(event) { event.preventDefault(); // 检查用户输入是否合法 if (nameInput.value.trim() === '') { alert('设备名称不能为空!'); return; } if (!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(installTimeInput.value)) { alert('安装时间格式必须是yyyy-MM-dd HH:mm:ss!'); return; } // 创建新设备 const newEquipment = new Equipment( nameInput.value.trim(), siteSelect.value, categorySelect.value, typeSelect.value, statusCheckbox.checked ? 1 : 0, new Date(installTimeInput.value).getTime() ); // 替换表格中的设备信息 row.querySelector('td:nth-child(1)').textContent = newEquipment.name; row.querySelector('td:nth-child(2)').textContent = newEquipment.site; row.querySelector('td:nth-child(3)').textContent = newEquipment.category; row.querySelector('td:nth-child(4)').textContent = newEquipment.type; row.querySelector('td:nth-child(5)').textContent = newEquipment.status ? '正常使用' : '维修中'; row.querySelector('td:nth-child(6)').textContent = formatTime(newEquipment.installTime); // 清空表单 form.reset(); // 取消事件监听 form.removeEventListener('submit', handleSaveEquipment); } form.addEventListener('submit', handleSaveEquipment); } tableBody.addEventListener('click', function(event) { if (event.target.classList.contains('edit-link')) { handleEditEquipment(event); } }); ``` 对于修改设备信息,我们需要先获取需要修改的设备信息,并将其填充到表单中。然后我们需要监听表单的提交事件,将用户输入的新设备信息替换原来的设备信息。 最后是删除设备信息: ```javascript // 处理删除设备信息 function handleDeleteEquipment(event) { event.preventDefault(); // 获取需要删除的设备所在行 const row = event.target.closest('tr'); // 删除设备所在行 row.parentNode.removeChild(row); } tableBody.addEventListener('click', function(event) { if (event.target.classList.contains('delete-link')) { handleDeleteEquipment(event); } }); ``` 对于删除设备信息,我们只需要获取需要删除的设备所在行,并将其从表格中删除即可。 最后,我们需要对用户输入进行验证,如果设备名称信息输入错误,精确提示用户输入错误: ```javascript // 验证设备名称 nameInput.addEventListener('input', function(event) { if (event.target.value.trim() === '') { event.target.setCustomValidity('设备名称不能为空!'); } else { event.target.setCustomValidity(''); } }); // 验证安装时间 installTimeInput.addEventListener('input', function(event) { if (!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(event.target.value)) { event.target.setCustomValidity('安装时间格式必须是yyyy-MM-dd HH:mm:ss!'); } else { event.target.setCustomValidity(''); } }); ``` 以上就是完整的代码实现。我们还需要在CSS文件中对页面样式进行定义,例如表格和表单的边框、字体颜色等等。

相关推荐

最新推荐

recommend-type

起点小说解锁.js

起点小说解锁.js
recommend-type

299-煤炭大数据智能分析解决方案.pptx

299-煤炭大数据智能分析解决方案.pptx
recommend-type

299-教育行业信息化与数据平台建设分享.pptx

299-教育行业信息化与数据平台建设分享.pptx
recommend-type

基于Springboot+Vue酒店客房入住管理系统-毕业源码案例设计.zip

网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes
recommend-type

时间复杂度的一些相关资源

时间复杂度是计算机科学中用来评估算法效率的一个重要指标。它表示了算法执行时间随输入数据规模增长而变化的趋势。当我们比较不同算法的时间复杂度时,实际上是在比较它们在不同输入规模下的执行效率。 时间复杂度通常用大O符号来表示,它描述了算法执行时间上限的增长率。例如,O(n)表示算法执行时间与输入数据规模n呈线性关系,而O(n^2)则表示算法执行时间与n的平方成正比。当n增大时,O(n^2)算法的执行时间会比O(n)算法增长得更快。 在比较时间复杂度时,我们主要关注复杂度的增长趋势,而不是具体的执行时间。这是因为不同计算机硬件、操作系统和编译器等因素都会影响算法的实际执行时间,而时间复杂度则提供了一个与具体实现无关的评估标准。 一般来说,时间复杂度越低,算法的执行效率就越高。因此,在设计和选择算法时,我们通常希望找到时间复杂度尽可能低的方案。例如,在排序算法中,冒泡排序的时间复杂度为O(n^2),而快速排序的时间复杂度在平均情况下为O(nlogn),因此在处理大规模数据时,快速排序通常比冒泡排序更高效。 总之,时间复杂度是评估算法效率的重要工具,它帮助我们了解算法在不同输入规模下的性
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章

![:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章](https://img-blog.csdnimg.cn/img_convert/69b98e1a619b1bb3c59cf98f4e397cd2.png) # 1. 目标检测算法概述 目标检测算法是一种计算机视觉技术,用于识别和定位图像或视频中的对象。它在各种应用中至关重要,例如自动驾驶、视频监控和医疗诊断。 目标检测算法通常分为两类:两阶段算法和单阶段算法。两阶段算法,如 R-CNN 和 Fast R-CNN,首先生成候选区域,然后对每个区域进行分类和边界框回归。单阶段算法,如 YOLO 和 SSD,一次性执行检
recommend-type

info-center source defatult

这是一个 Cisco IOS 命令,用于配置 Info Center 默认源。Info Center 是 Cisco 设备的日志记录和报告工具,可以用于收集和查看设备的事件、警报和错误信息。该命令用于配置 Info Center 默认源,即设备的默认日志记录和报告服务器。在命令行界面中输入该命令后,可以使用其他命令来配置默认源的 IP 地址、端口号和协议等参数。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。