【发布时间】:2021-06-03 20:25:28
【问题描述】:
我目前正在开发一个html表,用于数据处理,其中的值通过这个表传递给数据库。因此,表需要是动态的。我能够在表格中开发附加部分,但我已经超过一天试图从表格中删除一行,我能做的最多就是删除“头”,目标是在每一行中增加一个单元格创建删除行本身。代码目前是这样的。
HTML:
<table border="4">
<thead>
<tr>
<th>Exercicio</th>
<td><input type="text" name="userExercise" id="userExercise"></td>
</tr>
</thead>
<tbody>
<tr>
<th>Membro</th>
<td><input type="text" name="userMember" id="userMember"></td>
</tr>
<tr>
<th>Repetições</th>
<td><input type="text" name="userRep" id="userRep"></td>
</tr>
<tr id="btna">
<td colspan="2"><input type="button" name="button" id="btn" value="Add" onclick="AddRow()"></td>
</tr>
</tbody>
</table>
<table border="4" id="show">
<thead>
<tr>
<th>Exercício</th>
<th>Membro</th>
<th>Repetições</th>
<th>Deletar</th>
</tr>
</thead>
</table>
javascript:
var list1 = [];
var list2 = [];
var list3 = [];
var list4 = [];
var n = 1;
var x = 0;
function AddRow(){
var AddRown = document.getElementById('show');
var NewRow = AddRown.insertRow(n);
list1[x] = document.getElementById("userExercise").value;
list2[x] = document.getElementById("userMember").value;
list3[x] = document.getElementById("userRep").value;
list4[x] = "Deleta"
var cel1 = NewRow.insertCell(0);
var cel2 = NewRow.insertCell(1);
var cel3 = NewRow.insertCell(2);
var cel4 = NewRow.insertCell(3);
cel1.innerHTML = list1[x];
cel2.innerHTML = list2[x];
cel3.innerHTML = list3[x];
cel4.innerHTML = list4[x];
console.log(show.rows.length)
n++;
x++;
}
var index, table = document.getElementById('show');
for(var i = 1; i < table.rows.length; i++)
{
table.rows[i].cells[3].onclick = function()
{
var c = confirm("do you want to delete this row");
if(c === true)
{
index = this.parentElement.rowIndex;
table.deleteRow(index);
}
console.log(index);
};
}
好吧,当我单击“删除”时,什么也没有发生,当我更改 for (var i = 1; i
我在帖子中添加了一张图片以帮助查看
【问题讨论】:
-
首先,您需要从click事件中获取元素,以便知道单击了哪个单元格以及您需要删除的父级是哪一行。完成该工作后,您可能希望查看委托,因此您无需将 onclick 事件分配给每个单元格,而是分配给整个表格。有关委托处理的文档将向您显示单击了哪个元素(单元格),因此当您删除到行时,您仍然可以使用该信息。
-
您说您是在创建页面时使用javascript 或在服务器上动态构建表格。问题是简单的发布不会发送整个表格,只会发送输入字段。除非您求助于一些 ajax 调用并将您的表格打包成某种可组合的格式,否则您的服务器通常不会看到您的表格数据以放置在您的数据库中。如果您从 javascript 更新数据库,那么最后一部分不是问题。
标签: javascript html html-table