有一个动态表单,怎样用js点击编辑按钮的时候获取到单选框选择的那一行的数据,然后渲染到编辑表单里,点击确定修改后,改变那一行的内容
时间: 2024-02-20 08:56:25 浏览: 23
假设你的动态表单HTML结构如下:
```html
<table id="myTable">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>John</td>
<td>30</td>
<td>Male</td>
<td>
<button class="edit-btn">Edit</button>
</td>
</tr>
<tr>
<td>Jane</td>
<td>25</td>
<td>Female</td>
<td>
<button class="edit-btn">Edit</button>
</td>
</tr>
<!-- more rows... -->
</tbody>
</table>
```
可以使用以下步骤来实现点击编辑按钮时获取单选框选择的那一行的数据,并渲染到编辑表单里:
1. 给每个编辑按钮添加一个点击事件监听器。在事件处理程序中获取所在行的数据并将其渲染到编辑表单。
2. 在渲染表单时,将行数据填充到表单的各个字段中。
3. 给表单的“确定”按钮添加一个点击事件监听器。在事件处理程序中获取表单中的数据并将其更新到所选行。
下面是相应的代码示例:
```js
// 获取表格和表单元素
const table = document.getElementById('myTable');
const form = document.getElementById('myForm');
// 给所有编辑按钮添加点击事件监听器
table.addEventListener('click', (event) => {
if (event.target.classList.contains('edit-btn')) {
// 获取所在行的数据
const row = event.target.closest('tr');
const name = row.cells[0].textContent;
const age = row.cells[1].textContent;
const gender = row.cells[2].textContent;
// 填充表单字段
form.name.value = name;
form.age.value = age;
form.gender.value = gender;
// 显示编辑表单
form.style.display = 'block';
}
});
// 给表单的确定按钮添加点击事件监听器
form.addEventListener('submit', (event) => {
event.preventDefault(); // 阻止表单提交
// 获取表单数据
const name = form.name.value;
const age = form.age.value;
const gender = form.gender.value;
// 更新所选行的数据
const row = table.querySelector('tr.selected');
row.cells[0].textContent = name;
row.cells[1].textContent = age;
row.cells[2].textContent = gender;
// 隐藏编辑表单
form.style.display = 'none';
});
```
注意,这里假设编辑表单中有以下字段:`name`、`age`和`gender`。另外,需要给当前选中的行添加`selected`类,以便在表单提交时识别所要更新的行。