web-dev-qa-db-ja.com

IDでテーブルから行を削除します

少し問題があります。動的に作成されたテーブルがいくつかあり、各行にはIDがあります。 ID「x」の行を削除します。

私は通常の方法(removeChild)を試しましたが、明らかにテーブルでは機能しません。

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

私が得るエラーは次のとおりです:Node was not found "code:" 8

私もこれを試しました:

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

同じエラーが発生しました。

deleteRow()メソッドを使用できないのは、行のインデックスが必要であり、インデックスを検索してIDを検索してから削除することを好まないためです(他のソリューションが見つからない場合でも)。 。)。

19
zozo

どうですか:

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

vilx-へ:

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

そして、もし_row.parentNodeTBODYですか?

最初にチェックアウトしてから、while by .tBodies、 多分

3
Yuri

この 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で機能しました。

2
rsbarro

そして、その行を削除せずに非表示にしようとするのはどうですか?

1
Napas

行の親はあなたが思うオブジェクトではありません。これは私がエラーから理解していることです。
最初に行の親を検出してみてください。次に、親のgetElementById部分に何を書き込むかを確認できます。

0
Oralet

迅速で汚れたもの:

<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なしでも機能する)

0
Oliver Zendel