var eles=document.getElementsByName("subCheck");
for(var =1,i<eles.length;i++){
var ele=eles[i];
$(ele).remove();
}
针对以上代码,若eles的长度为4的话,实际情况只能删掉2个。这是因为JS在删掉一个元素的同时,将eles集合中的元素同时删掉。也就是说被循环的集合是动态的。
比如,原eles[A,B,C,D]
第一次循环前 eles=[A,B,C,D] i=0; 获得 ele=A,删除掉A
第二次循环前 eles=[B,C,D] i=1; 获得 ele=C ,删除掉C
第三次循环前 eles=[B,D] i=2;这时i的值已经大于eles集合的长度,不再进入循环。
最后的结果就是只删除掉了部分元素。
正确的代码为:
var eles=document.getElementsByName("subCheck");
for(var =eles.length-1,i>=0;i--){
var ele=eles[i];
$(ele).remove();
}
针对以上代码,比如,原eles[A,B,C,D]
执行过程为:
第一次循环前 eles=[A,B,C,D] i=3; 获得 ele=D,删除掉D
第二次循环前 eles=[A,B,C] i=2; 获得 ele=C ,删除掉C
第三次循环前 eles=[A,B] i=1; 获得 ele=B, 删除掉B
第三次循环前 eles=[A] i=0; 获得 ele=A, 删除掉A
此时i=-1,循环结束。
最后的结果是全部删除。