前端Javascript 复选按钮删除所有项,只删除一半的几种解决办法!

在JavaScript中去操作DOM节点,for循环remove掉所选按钮,或者所有按钮,会遇到只删除一半的问题,如下图所示

本来选好的所有删除,但是结果会保留一半,接着点击删除,又是保留一半,直到删除所有。

解决办法:

第一种: 在循环体中,最后加入一条代码,i--,如下

  dele.onclick = function () {                      // 点击事件
                    for (j = 0; j < allbox.length; j++) {         //循环 j


                        if (allbox[j].checked == true) {          //条件判断,如果全款按钮选中,则所有复选框选中
                          
                            allbox[j].parentNode.parentNode.remove()      //被选中的按钮其父元素的父元素被删除
                            j--                                    //j--  使j从新开始循环
                           

                        }
                    
                    }
                }

完美解决保留一半的问题,原因在于这个循环不是选中所有,而是因为用的remove删除节点,导致下面元素下标发生 变化,所以循环无法全部选中,而是跳棋一样删除

第二种:  不适用remove(),改成用style.display='none'

这样不会产生下标变化的问题,所以循环正常

 

第三种,条件选择if,如果全选按钮选中,则删除这些tr的父元素,tbody,这样也会解决问题

 

第四种,将所有选中的元素,挑选出来,放在一个数组中,再进行删除,避免该问题。

一定还有很多其他办法,欢迎大家补充

 

posted @ 2020-10-31 18:02  诗意的前端工匠  阅读(549)  评论(0)    收藏  举报