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

时间:2011-07-05 14:06:09

标签: javascript string search

我想要一个脚本来删除在单元格中找到关键字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;}

2 个答案:

答案 0 :(得分:4)

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

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);
    }
}

答案 1 :(得分:0)

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

编辑:再次查看您的代码后,您需要将itable.rows.length进行比较,而不是将rowCount变量与table.rows的长度进行比较