- sdgd
- dvsv
- dscs
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为每个li之间是有空白子节点的,所以没效果的情况是你删除了空白节点,一般再点一下你会发现又可以删了
你想实现点击删除某个li?那为什么要套在一个
onmouseover里面,而且为什么要那么复杂上面的问题出现在当li元素删除时,li元素的数量就会减少,li.length,this.index也就发生了变化;可以在for遍历中从后往前即可:
正确思路是把事件绑定到li元素的父级ul上,当鼠标点击到要删除的li元素时,鼠标事件会从li传递到父级ul上,再通过事件对象event.target获取当前点击的li元素,如下:
需要了解js事件代理,冒泡机制,以及js事件对象
看一段你的代码:
其中
ul.childNodes返回的是 子节点的集合而节点包括:
文本节点
属性节点
元素节点
所以
ul.removeChild()移除肯定会出现错误如果要按照你的逻辑来,可以这么写:
js中的一种特别的方式去实现这个功能 (这个完全是js设计模式的一种模式——命令模式)
倘若对代码进行优化的话,代码可以这样写:
或许这样可以: