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

无法删除节点

点击删除 控制台报错Cannot read property 'parentNode' of undefined at del

代码如下

<script type="text/javascript">

window.onload = function() {

var tr = document.getElementsByTagName("tr");

for (var i = 0; i < tr.length; i++) {

tr[i].onmouseover = function() {

this.style.backgroundColor = '#f2f2f2';

}

tr[i].onmouseout = function() {

this.style.backgroundColor = '#fff';

}

}

} //1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff

var num = 2;

function add() {

num++;

var tr = document.createElement("tr");

var xh = document.createElement("td");

var xm = document.createElement("td");

var del = document.createElement("td");

xh.innerHTML = "xh00" + num;

xm.innerHTML = "<input value='请输入姓名'/>"; //?

del.innerHTML = "<a href='javascript:del(this)'>删除</a>";

var table = document.getElementById("table");

table.appendChild(tr);

tr.appendChild(xh);

tr.appendChild(xm);

tr.appendChild(del);

//插入节点

var tr = document.getElementsByTagName("tr");

for (var i = 0; i < tr.length; i++) {

tr[i].onmouseover = function() {

this.style.backgroundColor = '#f2f2f2';

}

tr[i].onmouseout = function() {

this.style.backgroundColor = '#fff';

}

}

}

function del(obj){

            var table = obj.parentNode.parentNode.parentNode;

var tr = obj.parentNode.parentNode;

table.removeChild(tr);

        }

</script>

调用函数用的<a href="javascript:del(this);">删除</a>

我的理解是 obj是a标签 obj.parentNode是td

 obj.parentNode.parentNode是tr

obj.parentNode.parentNode.parentNode是table

要删除table中的tr就是table.removeChild(tr);

正在回答

1 回答

我运行的结果是正确的,可能你函数调用那里有问题,这个函数应该没问题。

http://img1.sycdn.imooc.com//5e7831d60001418804790099.jpg

http://img1.sycdn.imooc.com//5e7831ee0001c64003120151.jpg

http://img1.sycdn.imooc.com//5e7831f700011fc203240139.jpg删除了xh003

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

举报

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

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

进入课程

无法删除节点

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