问答详情
源自:9-22 编程练习

关于removeChild()的问题

这个作业的删除函数,我原来是这么写的(鼠标移动到某一行,该行的背景色会变,所以通过判断背景色来确定哪一行是要删除的):

function deltr(){
  var td=document.getElementById("table");
  var tr=document.getElementsByTagName("tr");
  for(i=0;i<tr.length;i++){
   if(tr[i].style.backgroundColor=="red"){
   td.removeChild(tr[i]);
   }

 }

 }

我在测试的时候,不知道为什么,这样写td.removeChild(tr[i]);,原有的那两行删不掉,删新添加的可以;

后来查资料换成这样写: tr[i].parentNode.removeChild(tr[i]);就可以删掉前两行了

这是为什么呢?在table里,tr的父节点只能是table,我通过document.getElementById的方式获取到table,直接removeChild为什么删不掉body里不是新建的tr呢?

提问者:慕神600158 2017-09-22 13:12

个回答

  • DeppSparrow
    2017-10-16 23:58:58
    已采纳

    评论里有人说了,table的子节点有一个是tbody,tbody的子节点才是tr

  • ilocks
    2017-09-27 21:39:08

    2333