我不明白代码里面的var tr = obj.parentNode.parentNode; tr.parentNode.removeChild(tr);是什么意思?obj的父节点的父节点不就是table标签了么,table标签的父节点是body,tr.parentNode.removeChild(tr);不就是等于body.removeChild(tr);了么?可要删除的tr标签,是在table标签下啊。
第一个问题: tr.parentNode.removeChild(tr);这个就是获取tr的父元素然后删除tr元素
tabale的子节点结构是text和tbody,而tr在tbody中,td则在tr中
var table=document.getElementById("table"); var tr=obj.parentNode.parentNode; //table.removeChild(tr);//所有行都被删除 tr.parentNode.removeChild(tr);//只删除当前行
为什么会全部删除了你=呢,tr.parentNode不是table吗
<a href="javascript:;" onclick="deleteRow(this)">删除</a>
所以this是指a标签
我试着把obj输出,用document.write(obj.nodeName);结果显示是A标签,那么A标签父节点是td,再父节点是tr。我也是有点不明白为什么this会指向的是A标签,有点懵
这个A标签,把我弄的,一愣一愣的。谢谢大神的点拨
嗯嗯,我刚开始也是忽略了一个标签,加油!
我也跟你一样刚开始不明白这个问题,但是刚才想明白了,obj是就是函数调用时的this,而this指的是<a>,不是<td>,所以obj.parentNode.parentNode是<tr>。然后tr.parentNode是<table>,然后再removeChild(tr)就是<table>移除<tr>,这个<tr>是前面得到的obj.parentNode.parentNode