9-22练习:删除函数
function deleteRow(obj){ var tr=obj.parentNode.parentNode; var table=document.getElementById("table"); table.removeChild(tr); }
这么写为什么只能删除新建的行,不能删除默认的行呢?
function deleteRow(obj){ var tr=obj.parentNode.parentNode; var table=document.getElementById("table"); table.removeChild(tr); }
这么写为什么只能删除新建的行,不能删除默认的行呢?
2017-03-03
不好意思,刚开始搜索的时候没有发现类似问题 为什么删除原有的两行删不掉?和点赞最多的答案区别在哪里?
根据这个问题的答案,补充一下答案。
一个完整的<table>标签如下:
<table> <thead> </thead> <tfoot> </tfoot> <tbody> <tr> <td> </td> </tr> </tbody>
当使用题目列举的删除函数,<table>默认子节点是不存在<tr>标签的,这是默认两行删不掉的原因。
而我们大多数人的添加函数中,基本上是用下面这种方式:
table.appendChild(tr);
即把“新建的行“看作<table>标签的子节点加入到其中,即
<table> <thead> </thead> <tfoot> </tfoot> <tbody> </tbody> <tr> </tr> // appendChild(); 添加的节点 </table>
这就造成了只能删除新建的行,不能删除默认的两行。
如有纰漏,还望指正。
举报