gpt4 book ai didi

javascript - 动态删除html表中的多列

转载 作者:太空狗 更新时间:2023-10-29 16:36:01 25 4
gpt4 key购买 nike

我正在尝试使用 javascript 从 html 表中删除多列。它使用的逻辑是在顶行搜索标签“”,然后删除该列。

问题是,如果第一行中只有一个单元格有 '',那么它会很好地删除该列,但如果有多个列,则会抛出错误。

这是我的代码

<!DOCTYPE html>
<html>
<body>
<table style="width:100%" border='1' id='Just_for_california'>
<tr>
<td><span></span></td>
<td>S</td>
<td><span></span></td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td>80</td>
</tr>
</table>

</body>


<script>



var dataTable_length = document.getElementById('Just_for_california').rows[0].cells.length;
var count_rows = document.getElementById('Just_for_california').rows.length;
var column_array = [];
for(var i=0; i<dataTable_length; i++)
{
var str = document.getElementById("Just_for_california").rows[0].cells[i].innerHTML;
if(str.search("<span></span>") != -1)
{
column_array.push(i);
}

}
var len = column_array.length;
for(var i=count_rows-1 ; i>=0;i--)
{
rows_number = document.getElementById('Just_for_california').rows[i];
console.log("row_number:"+i);

for(var j=0; j<len;j++)
{
rows_number.deleteCell(column_array[j]);
}

}




</script>
</html>

最佳答案

发生这种情况是因为您在删除单元格时错误地计算了索引。我重构了你的代码(让它更清晰),它现在似乎可以工作了:

var table = document.getElementById('Just_for_california'),
rows = table.rows;

for (var i = 0; i < rows[0].cells.length; i++) {
var str = rows[0].cells[i].innerHTML;
if (str.search("<span></span>") != -1) {
for (var j = 0; j < rows.length; j++) {
rows[j].deleteCell(i);
}
}
}

问题是您试图“水平”删除行中的单元格。假设您要删除索引 13 处的单元格,并且表中有 4 列。当您删除第一个单元格 1 时,它工作正常。但是,然后您向右移动并尝试删除索引 3 处的单元格。这会失败,因为您已经删除了单元格 1,因此不再有索引为 3 的单元格。现在的最大索引是 2。因此错误。

在我改进的代码中,我“垂直”删除了列,因此不会发生这样的问题。

演示:http://jsfiddle.net/t2q60aag/

关于javascript - 动态删除html表中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612152/

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