我试过了:
<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:
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:尝试引用a中的Node 它不存在的背景
因此,我怀疑,桌子不是tr的父母?
答案 0 :(得分:2)
在这种情况下,父元素是<tbody>
(开头和结尾标记,可选)。
请参阅HTML 5 tree construction rules:
8.2.5.4.9“在表格中”插入模式
...
标签名称为以下之一的开始标记:“td”,“th”,“tr”
将堆栈清除回表格上下文。 (见下文。)
为没有属性的“tbody”开始标记标记插入HTML元素,然后将插入模式切换为“在表格主体中”。
重新处理当前令牌。
答案 1 :(得分:1)
<table>
在DOM中有一个隐式<tbody>
,无论你是否在HTML中放置一个:{/ p>
console.log(child.parentNode.nodeName); // TBODY
console.log(child.parentNode.parentNode.nodeName); // TABLE
console.log(child.parentNode.parentNode == parent); // true
答案 2 :(得分:1)
尝试
var child = document.getElementById("aa");
child.parentNode.removeChild(child);
您应该添加空检查,例如
if(child != null && child.parentNode != null)
child.parentNode.removeChild(child);
else
alert("NULL reference");
答案 3 :(得分:0)
TR的父节点是TBODY。如果未定义,浏览器会自动创建TBODY。