注册 登录
编程论坛 JavaScript论坛

数组的删除

lihuan521 发布于 2015-05-22 11:37, 1189 次点击
var t=document.getElementsByTagName("p")
var c = [];
for (var i = 0;i<t.length;i++){
    c.push(t[i].getAttribute('level'));
    if(c[i]==0){
      t[i].parentNode.removeChild(t[i]);
    }
}
实现删除 c 数组中等于0
然后相对删除 t  数组中的P
比如t[<p level="1"></p>,p level="2"></p>,p level="0"></p>,p level="0"></p>,]
c获取的是c[1,2,0,0]
当c[i]=0删除了t中的P
t[i].parentNode.removeChild(t[i]);这个怎么解决
7 回复
#2
lihuan5212015-05-22 11:40
怎么批量删除掉
运行后显示的一个一个删除 偶尔2个删除 哪里不对吗
#3
lihuan5212015-05-22 11:54
对了如果删除后数组元素的位置得留着得怎么弄
#4
lihuan5212015-05-22 11:57
就是删除后数组长度不变 0的位置变成undefined
#5
jsRank2015-05-22 12:36
当执行t[i].parentNode.removeChild(t[i]);后,t的长度会发生变化,t.length会有4变成3,所以要时刻控制索引值,应该这样写:
         var t=document.getElementsByTagName("p");
         var c = [];
         for (var i = 0;i<t.length;i++){
             c.push(t[i].getAttribute('level'));
         }
         
         var cnt = 0;
         for (var i = 0;i<c.length; i++)
         {
            if(c[i]==0){
               c[i] = undefined;
               var index = i-cnt++;
               t[index].parentNode.removeChild(t[index]);
            }
         }

[ 本帖最后由 jsRank 于 2015-5-22 12:42 编辑 ]
#6
冰镇柠檬汁儿2015-05-23 14:12
楼上正解,呵 呵,楼主你刚push完就remove会有问题的
#7
zhzoli2015-06-07 10:28
我也跟着学点。谢谢!
1