通过id从表中删除一行

时间:2011-02-11 09:06:44

标签: javascript html dom row

我有点问题。我有一些动态创建的表,每行都有一个id。我想删除id为“x”的行。

我尝试了常用方法(removeChild),但它显然不适用于表。

function deleteRow(tableid, rowid)  
{   
      document.getElementById(tableid).removeChild(document.getElementById(rowid));  
}   

我得到的错误是:未找到节点“code:”8

我也试过这个:

function deleteRow(tbodyid, rowid)   
{  
      document.getElementById(tbodyid).removeChild(document.getElementById(rowid));   
}   

并得到了同样的错误。

我不能使用deleteRow()方法因为那个需要行的索引而我不想搜索索引然后删除的id标记(即使我没有找到其他解决方案。 ..)。

7 个答案:

答案 0 :(得分:65)

怎么样:

function deleteRow(rowid)  
{   
    var row = document.getElementById(rowid);
    row.parentNode.removeChild(row);
}

而且,如果失败了,这应该真的有效:

function deleteRow(rowid)  
{   
    var row = document.getElementById(rowid);
    var table = row.parentNode;
    while ( table && table.tagName != 'TABLE' )
        table = table.parentNode;
    if ( !table )
        return;
    table.deleteRow(row.rowIndex);
}

答案 1 :(得分:3)

到Vilx - :

var table = row.parentNode;
while ( table && table.tagName != 'TABLE' )
    table = table.parentNode;

如果row.parentNodeTBODY会怎样?

你应该先检查一下,之后再检查一下 while .tBodies,可能是

答案 2 :(得分:2)

从这个post开始,试试这个javascript:

function removeRow(id) {
  var tr = document.getElementById(id);
  if (tr) {
    if (tr.nodeName == 'TR') {
      var tbl = tr; // Look up the hierarchy for TABLE
      while (tbl != document && tbl.nodeName != 'TABLE') {
        tbl = tbl.parentNode;
      }

      if (tbl && tbl.nodeName == 'TABLE') {
        while (tr.hasChildNodes()) {
          tr.removeChild( tr.lastChild );
        }
      tr.parentNode.removeChild( tr );
      }
    } else {
      alert( 'Specified document element is not a TR. id=' + id );
    }
  } else {
    alert( 'Specified document element is not found. id=' + id );
  }
}

我在测试页面中尝试过这个javascript,它在Firefox中适用于我。

答案 3 :(得分:1)

那么尝试不删除但隐藏那一行呢?

答案 4 :(得分:0)

行的父级不是你想到的对象,这是我从错误中理解的 首先尝试检测行的父级,然后确定要写入父级getElementById部分的内容。

答案 5 :(得分:0)

快速而又脏的东西:

<script type='text/javascript'>
function del_tr(remtr)  
{   
    while((remtr.nodeName.toLowerCase())!='tr')
        remtr = remtr.parentNode;

    remtr.parentNode.removeChild(remtr);
}
function del_id(id)  
{   
        del_tr(document.getElementById(id));
}
</script>

如果你放置

<a href='' onclick='del_tr(this);return false;'>x</a>

要删除的行中的任何位置,而不是在没有任何ID的情况下工作

答案 6 :(得分:-1)

#submission's name \n link


Bug Report: Selecting Jaina loads you in as Valeera.
https://www.reddit.com/r/heroesofthestorm/comments/fms1k9/bug_report_selecting_jaina_loads_you_in_as_valeera/

All missing potential Heathstone Portraits
https://www.reddit.com/r/heroesofthestorm/comments/fnbcvw/all_missing_potential_heathstone_portraits/