少し問題があります。動的に作成されたテーブルがいくつかあり、各行には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を検索してから削除することを好まないためです(他のソリューションが見つからない場合でも)。 。)。
どうですか:
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);
}
vilx-へ:
var table = row.parentNode;
while ( table && table.tagName != 'TABLE' )
table = table.parentNode;
そして、もし_row.parentNode
はTBODY
ですか?
最初にチェックアウトしてから、while
by .tBodies
、 多分
この 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で機能しました。
そして、その行を削除せずに非表示にしようとするのはどうですか?
行の親はあなたが思うオブジェクトではありません。これは私がエラーから理解していることです。
最初に行の親を検出してみてください。次に、親のgetElementById
部分に何を書き込むかを確認できます。
迅速で汚れたもの:
<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なしでも機能する)