数组元素是对象时,删除时需要注意的(不是直接用delete删除)

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

数组元素是对象时,删除时需要注意的(不是直接用delete删除)
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])
}

你可能感兴趣的:(JavaScript)