数组元素是对象时,删除时亟需注意的(不是直接用delete删除)
数组元素是对象时,删除时需要注意的(不是直接用delete删除)
数组元素(虽然下面获得的不是一个数组,只是一个集合,但是也成利)是对象时,当销毁这个对象,则数组自动把它从数组中去掉,同时数组长度减为1,不同于delete ,delete一个数组元素,则这个数组元素所在的位依然在,数组长度不变。

举个列子,当body中有很多个span元素时,现在把这些元素从dom树中删除。

数组元素(虽然下面获得的不是一个数组,只是一个集合,但是也成利)是对象时,当销毁这个对象,则数组自动把它从数组中去掉,同时数组长度减为1,不同于delete ,delete一个数组元素,则这个数组元素所在的位依然在,数组长度不变。
举个列子,当body中有很多个span元素时,现在把这些元素从dom树中删除。
var spanlist=document.getElementsByTagName('span'); //假如下面的删除代码段写成这样的形式:for(var i=0;i<spanlist.length;i++){ document.body.removeChild(spanlist[i])},那么会发现,只删除了一半元素,这是为什么呢?如开篇所说,删除第一个span后,spanlist动态更新,长度变为原始长度-1,而下一个i指向的是第1个元素(不是spanlist[0]),所以把spanlist[0]给漏掉了。所以最后只删掉了一半。 while(spanlist.length!=0){ document.body.removeChild(spanlist[0]) }