为了账号安全,请及时绑定邮箱和手机立即绑定

来个帅b解决下啦

删除这部分 我先通过id=table获取整个标签<table>(注释部分)   然后这样子 最初的两个点击删除会报错  为什么


/* 删除 */

function del(c){

console.log(c.parentNode.parentNode)

var talble_ = document.getElementById('table');

c.parentNode.parentNode.parentNode.removeChild(c.parentNode.parentNode);


// 删除最初的两个会报错

// talble_.removeChild(c.parentNode.parentNode);

}


正在回答

2 回答

console.log(c.parentNode.parentNode)

var talble_ = document.getElementById('table');

c.parentNode.parentNode.parentNode.removeChild(c.parentNode.parentNode);


//var tbody = document.getElementById("table").lastChild  

//table表格默认的层级关系  table>tbody>tr+td

//所以有 c.parentNnde.parentNode.parentNode = tbody   

//则在移除的时候 c.parentNode.parentNode = tr     tr就是tbody的直接子节点所以移除成功

//综上可说明 当用 table_.removeChild(c.parenrNode.parentNode)时,c.parenrNode.parentNode不是table_直接的子节点   移除失败

                //"直接子节点"是我自己取得名字,希望能便于理解:例如tr和td是tbody的直接子节点,是table的间接子节点


// 删除最初的两个会报错

// talble_.removeChild(c.parentNode.parentNode);

     }


1 回复 有任何疑惑可以回复我~
#1

forward_cc 提问者

你好 这个c.parentNode.parentNode.parentNode 应该是整个<table> 而var tbody = document.getElementById("table").lastChild 应该是<table>最后一个子节点 所以c.parentNnde.parentNode.parentNode 不等于 tbody 我是这样理解的
2019-04-12 回复 有任何疑惑可以回复我~

没人么 -。-

0 回复 有任何疑惑可以回复我~
#1

qq_必当凌绝顶_0

我觉得 如果你部注释掉最后一句 你会把同一节点 tr 删除两次 这样可能部报错把
2019-04-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468073    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

来个帅b解决下啦

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信