js 删除元素报错

直接看代码,msgList 是一个 ul 元素,target.parentNode 是 ul 下的 li,target 是 li 内部的 a 标签,要实现的功能是在 ul 上设置了 click 的事件监听,当点击 a 的时候,通过事件冒泡,会删除包含该 a 标签的 li 标签。但是如下的写法最终该元素也删除了,但是控制台却报了一个错误,没想明白怎么回事,请大神指教一二。

https://img3.mukewang.com/5c7de17d00013a3908000318.jpg

报的错误:

https://img3.mukewang.com/5c7de1800001a85e08000128.jpg

但是我不使用事件委托的方式,直接遍历所有的 a 标签,就是正常的。

https://img2.mukewang.com/5c7de1810001aa5508000255.jpg

料青山看我应如是
浏览 921回答 2
2回答

米琪卡哇伊

第一张图里面使用 事件委托的方式,刚才执行了一遍,也没报错,看代码也没任何问题。应该是其它地方出问题了。

蛊毒传说

MDN上有针对removeChild上可能造成的异常有解释:The method throws an exception in 2 different ways:If the child was in fact a child of element and so existing on theDOM, but was removed the method throws the following exception:Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.If the child doesn't exist on the DOM of the page, the method throwsthe following exception:Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.If child was in fact a child of element at the time of the call, but was removed by an event handler invoked in the course of trying to remove the element (eg, blur.)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript