JavaScript:在一行中搜索字符串,如果找到字符串就删除行

JavaScript: Search for a string in a row and delete row if string is found

本文关键字:字符串 如果 删除行 搜索 一行 JavaScript      更新时间:2023-09-26

我想要一个脚本,删除其中关键字STRING在单元格中找到的每一个表行,但我的脚本似乎删除了包含STRING关键字的每一个其他行。显然,每次删除一行时,都会更新行编号。怎么解释呢?提前谢谢。

<script type="text/javascript">
var table = document.getElementById("DatePreferred").firstChild;
var rowCount = table.rows.length;
for(var i=0; i<rowCount; i++) {
  var row = table.rows[i];
  var text = row.cells[0].innerText;
  if(text.indexOf("STRING")!=-1){
     table.deleteRow(i);
  }
 }
</script>

编辑:所以FishBasketGordo的答案让我的脚本为IE和Safari工作,但它不是在FF工作。我看了看错误在哪里,显然FF处理。innertext不同。你必须使用。textcontent。因此,如果你将下面的代码添加到上面的脚本中,它将使用相应的方法:

if (row.cells[0].textContent){
   var text = row.cells[0].textContent;}
else {var text = row.cells[0].innerText;}

当我需要做这样的事情时,我喜欢向后工作:

for(var i= rowCount - 1; i >= 0; i--) {
    var row = table.rows[i];
    var text = row.cells[0].innerText;
    if(text.indexOf("STRING")!=-1){
        table.deleteRow(i);
    }
}

当您删除一行时,使用i--减少i,以便您的for循环重新检查相同的索引(现在将包含下一行)

编辑:再次查看代码后,您将需要比较itable.rows.length,而不是rowCount变量,以解释table.rows长度的变化。