gpt4 book ai didi

javascript - 使用 rowspan 删除多个选定的行

转载 作者:行者123 更新时间:2023-11-30 13:06:32 25 4
gpt4 key购买 nike

我想删除带有 rowspan 的选定行和下面的额外行,总共 4 行,你可以看到每 4 行堆栈代表 1 个条目。下面的函数 deleteSelectedRows() 无法正常工作;它只会删除所选的那个。你能帮忙吗?

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<table id="my_table" id="my_table" align="center" width="100%" border="1" cellpadding="0" cellspacing="0">
<tbody>
<thead>
<tr>
<th >No</th>
<th >Location</th>
<th >Time</th>
</tr>
<tr> <!-- new entry #1 -->
<td rowspan="3"><input type="checkbox">1a<td>
<td>1a</td>
</tr>
<tr>
<td>2a</td>
<td>2a</td>
</tr>
<tr>
<td>3a</td>
<td>3a</td>
</tr>
<tr >
<td colSpan="3">4a</td>
</tr>
<tr> <!-- new entry #2-->
<td rowspan="3"><input type="checkbox">1b<td>
<td>1b</td>
</tr>
<tr>
<td>2b</td>
<td>2b</td>
</tr>
<tr>
<td>3b</td>
<td>3b</td>
</tr>
<tr >
<td colSpan="3">4b</td>
</tr>
</thead></tbody>
</table>
<div><input type="button" value="Delete selected rows" onClick="deleteSelectedRows()"/></div>
</body>
</HTML>
<SCRIPT language="javascript">
function deleteSelectedRows() {
var table = document.getElementById('my_table'); //html table
var rowCount = table.rows.length; //no. of rows in table
for(var i=0; i< rowCount; i++) { //loops for all row in table

var row = table.rows[i]; //return a particular row
var chkbox = row.cells[0].childNodes[0]; //get check box onject
if(null != chkbox && true == chkbox.checked) { //wheather check box is selected
table.deleteRow(i); //delete the selected row

rowCount = rowCount-1; //decrease rowcount by 1
i--;
}
}
}
</script>

最佳答案

提供的 HTML 有一些小的验证错误,我已在下面更正这些错误。这些是 <thead>不会包含您的整个表格,绝对不应该在 <tbody> 之后 存在.还有一个重复的 id<table> 上.请参阅documentation用于有效的表元素顺序。

您遇到的问题是代码只删除了与复选框匹配的一行。 rowCount然后会减少 1(从 9 到 8),但删除行的逻辑仍然取决于找到的复选框,但这永远不会再成立,因为您刚刚删除了该行!

更新后的 JavaScript 首先找到 rowIndex,就像您已经找到的那样,但现在会中断,然后使用该索引作为起始位置迭代向后删除 4 行。

编辑:更新后的 JavaScript 向后工作,避免了所有递增和递减,现在可以在检查多个输入时工作。抱歉,我错过了第一个答案可以选中多个框的可能性!

See demo或下面的代码。

HTML(现在有效)

<table  id="my_table" align="center" width="100%" border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>No</th>
<th>Location</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<tr> <!-- new entry #1 -->
<td rowspan="3"><input type="checkbox"/>1a</td>
<td>1a</td>
<td></td>
</tr>
<tr>
<td>2a</td>
<td>2a</td>
</tr>
<tr>
<td>3a</td>
<td>3a</td>
</tr>
<tr>
<td colSpan="3">4a</td>
</tr>
<tr> <!-- new entry #2-->
<td rowspan="3"><input type="checkbox"/>1b</td>
<td>1b</td>
<td></td>
</tr>
<tr>
<td>2b</td>
<td>2b</td>
</tr>
<tr>
<td>3b</td>
<td>3b</td>
</tr>
<tr>
<td colSpan="3">4b</td>
</tr>
</tbody>
</table>
<div><input type="button" value="Delete selected rows" onClick="deleteSelectedRows()"/></div>

JavaScript

function deleteSelectedRows() {    
var table = document.getElementById('my_table'); //html table

for (var rowIndex = table.rows.length - 1; rowIndex >= 0; rowIndex--) { //loops for all row in table
var row = table.rows[rowIndex]; //return a particular row
var chkbox = row.cells[0].childNodes[0]; //get check box object

if (null != chkbox && true == chkbox.checked) { //wheather check box is selected
// rowIndex = row with checkbox on
for (var i = rowIndex + 3; i >= rowIndex; i--) {
table.deleteRow(i); //delete the selected row
}
}
}
}

关于javascript - 使用 rowspan 删除多个选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com