JS中对象的循环删除问题
2018-03-28 10:52
302 查看
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,循环结束。最后的结果是全部删除。
正确的代码为: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,循环结束。最后的结果是全部删除。
相关文章推荐
- JS中对象的循环删除问题
- 原生js解决对象事件处理程序添加和删除的兼容性问题
- 在jsp的c标签循环后台对象属性的情况下,使用js提取其中一个id属性使用ajax传到后台删除
- 在jsp的c标签循环后台对象属性的情况下,使用js提取其中一个id属性使用ajax传到后台删除
- js数组循环删除元素或对象
- js遍历数组时删除指定对象出现问题
- 关于一些基础的js对象的属性和方法问题
- 循环往list中放对象却总是一个对象的问题
- 用js操作html dom对象是,对象和js方法同名的问题
- bootstrap上传插件(fileinput.js)预览显示删除图标问题
- 从js的循环问题来看待js的闭包本质
- js删除对象的属性
- js 带循环的 嵌套函数 应注意的一个问题 循环index
- js对象引用和zhizhen问题
- 关于js中对象和函数的一道问题
- Java中List循环遍历的时候删除当前遍历对象
- 解决!关于,js 调用隐藏的服务器Button,缺少对象的问题
- cocos2d JS-(JavaScript) 几种循环遍历对象的比较
- js循环的是数组不是对象
- js在html文件中调用ActiveXObject对象成功,在jsp页面调用错误问题