1

やってみた:</p>

<table id ="table1">
<tr id ="aa"><td>aa</td></tr>
<tr id ="bb"><td>bb</td></tr>
</table>
<input type="button" onclick = "test()" value = "button">

そしてJavaScript:</p>

function test(){
    var parent=document.getElementById("table1");
    var child=document.getElementById("aa");
    parent.removeChild(child);  //this isn't work 
    //child.parentNode.removeChild(child);  this is ok!
}

エラー:

Uncaught NotFoundError: ノードが存在しないコンテキストでノードを参照しようとしました

したがって、テーブルはtrの親ではありませんか?

4

4 に答える 4

3

この場合、親要素は a です<tbody>(開始タグと終了タグはオプションです)。

HTML 5 ツリー構築規則を参照してください。

8.2.5.4.9 「テーブル内」挿入モード

…</p>

タグ名が「td」、「th」、「tr」のいずれかである開始タグ

スタックをクリアしてテーブル コンテキストに戻します。(下記参照。)

属性のない "tbody" 開始タグ トークンの HTML 要素を挿入し、挿入モードを "in table body" に切り替えます。

現在のトークンを再処理します。

于 2013-08-30T06:28:38.463 に答える
1

<table><tbody>s は、HTML に配置するかどうかに関係なく、DOM に暗黙的です。

console.log(child.parentNode.nodeName); // TBODY
console.log(child.parentNode.parentNode.nodeName); // TABLE
console.log(child.parentNode.parentNode == parent); // true

デモ

于 2013-08-30T06:29:19.277 に答える
1

試す

var child = document.getElementById("aa");
child.parentNode.removeChild(child);  

次のようにnullチェックを追加する必要があります

if(child != null && child.parentNode != null)
    child.parentNode.removeChild(child);  
else
    alert("NULL reference");
于 2013-08-30T06:29:47.637 に答える
0

TR の親ノードは TBODY です。TBODY が定義されていない場合、ブラウザは自動的に TBODY を作成します。

于 2013-08-30T06:29:18.803 に答える