deleteRow() 连续删除多行

本文介绍了一种在HTML表格中正确批量删除被选中复选框对应行的方法。通过从后往前遍历的方式,避免了因行删除导致的索引错乱问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    应用:删除表格选中的一行或多行。

html代码如下:

 

<table >
<tr>
<td >复选框</td>
<td >序号</td>
<td >代码</td>
<td >名称</td>
</tr>
<tbody id="mainBody">
<tr>
<td ><input type="checkbox" name="dms" value="D1" /></td>
<td >1</td>
<td >D1</td>
<td >名称1</td>
</tr>
<tr>
<td ><input type="checkbox" name="dms" value="D2" /></td>
<td >2</td>
<td >D2</td>
<td >名称2</td>
</tr>
<tr>
<td ><input type="checkbox" name="dms" value="D3" /></td>
<td >3</td>
<td >D3</td>
<td >名称3</td>
</tr>
<tr>
<td ><input type="checkbox" name="dms" value="D4" /></td>
<td >4</td>
<td >D4</td>
<td >名称4</td>
</tr>
</tbody>
</table>

 需求是,点击删除时可以删除复选框选中的一行或者多行。一般情况下,第一直觉都是按照如下写法:

 

 

function onDelete() {
    var checks = document.getElementsByName("dms");
    var tbBody = document.getElementById("mainBody");
    for (var i=0; i<checks.length; i++) {
	    if (checks[i].checked) {   
	    	tbBody.deleteRow(i);
	    }
    }
}

这样写存在一个问题,当第一行被删除时,表格的结构发生了变化,以前的第i+1行变成了现在的第i行,所以按照这种写法无法遍历删除所以选中的行。 

 

 正确的写法应该是像下面这样,从最大的行号开始删除,这样第i+1行被删除后不会影响第i行在表格中的行号。

 

function onDelete() {
    var checks = document.getElementsByName("dms");
    var tbBody = document.getElementById("mainBody");
    for (var i=checks.length-1; i>=0; i--) {
	    if (checks[i].checked) {   
	    	tbBody.deleteRow(i);
	    }
    }
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值