本来选好的所有删除,但是结果会保留一半,接着点击删除,又是保留一半,直到删除所有。
解决办法:
第一种: 在循环体中,最后加入一条代码,i--,如下
dele.onclick = function () { // 点击事件
for (j = 0; j < allbox.length; j++) { //循环 j
if (allbox[j].checked == true) { //条件判断,如果全款按钮选中,则所有复选框选中
allbox[j].() //被选中的按钮其父元素的父元素被删除
j-- //j-- 使j从新开始循环
}
}
}
完美解决保留一半的问题,原因在于这个循环不是选中所有,而是因为用的remove删除节点,导致下面元素下标发生 变化,所以循环无法全部选中,而是跳棋一样删除
第二种: 不适用remove(),改成用'none'
这样不会产生下标变化的问题,所以循环正常
第三种,条件选择if,如果全选按钮选中,则删除这些tr的父元素,tbody,这样也会解决问题
第四种,将所有选中的元素,挑选出来,放在一个数组中,再进行删除,避免该问题。
一定还有很多其他办法,欢迎大家补充