使用JavaScript在表格中动态添加及删除行,并进行表单校验
78 浏览量
更新于2024-11-01
收藏 2KB ZIP 举报
资源摘要信息:"js在tr后面追加tr,删除当前tr,提交校验tr的所有name值"
在Web开发中,使用JavaScript对HTML表格(table)元素进行动态操作是一种常见的需求。下面将详细介绍在表格中追加(append)、删除(delete)特定行(tr),以及在提交时校验行中所有元素的name属性值的相关知识点。
### 动态添加和删除表格行(tr)
要使用JavaScript在表格中添加或删除行,通常会用到以下HTML DOM属性和方法:
- `document.createElement(tagName)`:创建一个新的元素节点。
- `parentNode.appendChild(newChild)`:在指定父节点的子节点列表的末尾添加新的子节点。
- `parentNode.insertBefore(newChild, referenceChild)`:在指定父节点的子节点列表中,把新节点插入到referenceChild节点之前。
- `parentNode.removeChild(child)`:从DOM中删除一个子节点。
**示例代码:**
```javascript
// 追加一行到指定的表格中
function appendRowToTable(tableId) {
var table = document.getElementById(tableId);
var newRow = table.insertRow(); // 在表格末尾添加新行
// 创建新单元格并添加到新行中
var cell1 = newRow.insertCell(0);
var cell2 = newRow.insertCell(1);
// 设置单元格内容
cell1.innerHTML = "新行单元格1";
cell2.innerHTML = "新行单元格2";
}
// 删除当前行
function deleteCurrentRow(rowId) {
var row = document.getElementById(rowId);
row.parentNode.removeChild(row); // 从DOM中移除当前行
}
```
在实际应用中,可以根据需要给新添加的`<tr>`元素动态绑定事件处理器,以便实现更多的交互逻辑。
### 提交校验tr的所有name值
在提交表格数据之前,通常需要进行数据校验,确保所有必填字段都已正确填写。这可以通过JavaScript中的事件监听和数据校验逻辑来实现。
**表单提交前校验的步骤可能包括:**
1. 监听提交事件。
2. 遍历表格中的每一行,检查特定单元格(td)或输入元素(如input, select, textarea)的name属性值。
3. 根据业务需求进行相应的验证,如非空校验、数据格式校验等。
4. 校验通过后,允许表单提交;若不通过,则显示错误信息,并阻止表单提交。
**示例代码:**
```javascript
// 提交前进行校验
function validateForm() {
var tableRows = document.getElementsByTagName("tr");
var allValid = true;
for (var i = 0; i < tableRows.length; i++) {
var cells = tableRows[i].getElementsByTagName("td");
for (var j = 0; j < cells.length; j++) {
var inputs = cells[j].getElementsByTagName("input");
if (inputs.length > 0) { // 假设表单控件在td内部
for (var k = 0; k < inputs.length; k++) {
var inputName = inputs[k].name;
if (inputName) { // 检查name属性是否设置
var inputValue = inputs[k].value;
// 这里进行具体的校验逻辑,例如非空校验
if (!inputValue.trim()) {
alert("请输入" + inputName + "的值");
allValid = false;
break;
}
}
}
if (!allValid) break;
}
}
if (!allValid) break;
}
return allValid;
}
// 绑定提交事件到表单
document.getElementById("myForm").onsubmit = function(event) {
if (!validateForm()) {
event.preventDefault(); // 阻止表单默认提交行为
}
};
```
### 页面回显tr td的值
页面回显指的是将数据重新显示在页面上,这通常是在某些操作后需要更新页面上的表格数据,如添加、修改或删除行后的操作。
**页面回显步骤可能包括:**
1. 从服务器获取数据(如AJAX请求)。
2. 使用JavaScript遍历表格中的每一行,清空或更新单元格内容。
3. 将服务器返回的数据填充到对应的单元格中。
**示例代码:**
```javascript
// 回显数据到表格中
function echoDataToTable(dataArray) {
var table = document.getElementById("myTable");
for (var i = 0; i < dataArray.length; i++) {
var newRow = table.insertRow();
var cell1 = newRow.insertCell(0);
var cell2 = newRow.insertCell(1);
// 假设dataArray[i]是包含name和value的对象
cell1.innerHTML = dataArray[i].name;
cell2.innerHTML = dataArray[i].value;
}
}
// 假设从服务器获取数据后执行回显
echoDataToTable(serverDataArray);
```
### 总结
上述知识点展示了如何使用JavaScript在Web页面中动态地操作表格,包括在表格行后面添加新行、删除当前行以及在表单提交前对表格中的数据进行校验,并在特定操作后回显数据到页面上。熟练掌握这些操作对于提高Web应用的用户体验和数据交互处理是非常重要的。
需要注意的是,上述代码示例仅作为知识点演示,实际应用中可能需要结合具体的业务逻辑进行调整和优化。此外,在实际开发中,还应该考虑使用JavaScript库(如jQuery)来简化DOM操作,并且可能需要通过异步请求(如使用AJAX)与服务器进行数据交换,以实现更加动态和响应式的页面效果。
2012-12-06 上传
2021-01-19 上传
2020-10-26 上传
2020-12-12 上传
2020-11-30 上传
2021-04-24 上传
2023-05-22 上传
姓名: | <input type="text" name="personName" value="${sessionScope.updateById.personName}"> |
称呼: | <input type="text" name="personNickName" value="${sessionScope.updateById.personNickName}"> |
性别: | <input type="radio" name="personSex" value="${sessionScope.updateById.personSex}">男<input type="radio" name="personSex" value="${sessionScope.updateById.personSex}">女 |
类别: | <input type="text" name="kindId" value="${sessionScope.updateById.kindId}"> |
生日: | <input type="text" name="personBirthday" value="${sessionScope.updateById.personBirthday}"> |
电话: | <input type="text" name="personTelephone" value="${sessionScope.updateById.personTelephone}"> |
QQ: | <input type="text" name="personQQ" value="${sessionScope.updateById.personQQ}"> |
邮箱: | <input type="text" name="personEmail" value="${sessionScope.updateById.personEmail}"> |
地址: | <input type="text" name="personAddress" value="${sessionScope.updateById.personAddress}"> |
MSN: | <input type="text" name="personMSN" value="${sessionScope.updateById.personMSN}"> |
简介: | <textarea cols="10" rows="5" name="personInfo">${sessionScope.updateById.personInfo}</textarea> |
<input type="submit" name="重填" value="重填"> | <input type="submit" name="提交" value="提交"> |
2023-05-28 上传
姓名: | <input type="text" name="personName" value="${sessionScope.updateById.personName}"> |
称呼: | <input type="text" name="personNickName" value="${sessionScope.updateById.personNickName}"> |
性别: | <input type="radio" name="personSex" value="${sessionScope.updateById.personSex}">男<input type="radio" name="personSex" value="${sessionScope.updateById.personSex}">女 |
类别: | <input type="text" name="kindId" value="${sessionScope.updateById.kindId}"> |
生日: | <input type="text" name="personBirthday" value="${sessionScope.updateById.personBirthday}"> |
电话: | <input type="text" name="personTelephone" value="${sessionScope.updateById.personTelephone}"> |
QQ: | <input type="text" name="personQQ" value="${sessionScope.updateById.personQQ}"> |
邮箱: | <input type="text" name="personEmail" value="${sessionScope.updateById.personEmail}"> |
地址: | <input type="text" name="personAddress" value="${sessionScope.updateById.personAddress}"> |
MSN: | <input type="text" name="personMSN" value="${sessionScope.updateById.personMSN}"> |
简介: | <textarea cols="10" rows="5" name="personInfo">${sessionScope.updateById.personInfo}</textarea> |
<input type="submit" name="重填" value="重填"> | <input type="submit" name="提交" value="提交"> |
2023-05-28 上传
2023-05-31 上传
凉梦lm
- 粉丝: 36
- 资源: 30
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南