var list = temp.message.List;
                       for(var i=0; i<list.length;i++)
                       {
                           month=list[i].createDate.split("-");
                       if(list[i].Isdel == 1)
                       {
                       list.splice(i,1);
                       }
                       }移除了Isdel为1的元素之后,下面循环展示还是会有Isdel为1的记录,为什么啊!!!!

解决方案 »

  1.   

    在if判定语句之内加个alert查看被删除的东西,
    比如加个alert(list.length),查看list的长度是否减小
      

  2.   

    长度减少了,但是减少的元素不是判断条件里的元素,我要删除Isdel为1的元素,删除后的数组里Isdel又有0又有1的 var list = temp.message.List;
                          
                           for(var i=0; i<list.length;i++)
                           {
                           if(parseInt(list[i].Isdel) == 0)
                           {
                           list.splice(i,1);alert(list[i].Isdel);
                           }
                           }
    for(var i=0; i<list.length;i++)
                           {
                           alert(list[i].Isdel);                       }
      

  3.   

     for(var i=0; i<list.length;i++){
        if(parseInt(list[i].Isdel) == 0)
        {
         list.splice(i,1);alert(list[i].Isdel);
     i--;这个地方加个这。。因为长度减小了,所以list.length这个值在下一个循环的时候,就小了,所以导致后面的半段没有操作完
        }
    }这个可以明白我的意思吗?这样的删除操作最好是从最高的向最低的删除,
    比如for(var i= list.length-1;i>=0;i--)这样就不会有问题了,
    应该是这样的,试试!