.mm:nth-child(1)
时间: 2023-10-22 21:33:07 浏览: 56
这是一个 CSS 选择器,它选择其父元素下的第一个 class 为 ".mm" 的元素。具体来说,":nth-child(1)" 表示在其父元素下选择第一个子元素。而 ".mm" 则表示选择 class 为 ".mm" 的元素。因此,".mm:nth-child(1)" 选择的是其父元素下第一个 class 为 ".mm" 的元素。
相关问题
要求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”);
好的,这是一个比较完整的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文件中对页面样式进行定义,例如表格和表单的边框、字体颜色等等。
阅读全文