var ary = new Array(); 
function SelectIds(Obj)
{
    if(Obj.checked==true)
    {
        ary.push(Obj.id);
    }
    else
    {
        delete ary[Obj.id];
    }
    if(ary.length>0)
    {
        var ids="";
        for(var i=0;i<ary.length;i++)
        {
            ids+=ary[i].toString()+",";
        }
    }
window.parent.document.getElementById("lblid").value=ids;
alert(window.parent.document.getElementById("lblid").value) 现在的问题是可以添加上,但删除不了  delete ary[Obj.id];  这句话删除不了。有什么办法可以解决 ?
}

解决方案 »

  1.   

    数组的删除用splice
    pop只是将最后一个元素删掉
      

  2.   

    楼上的pop()只是删除数组中最后一个元素,不对的!
    楼主想实现以下功能吧?如果选中就将该项id插入数组,未选中就将该项id从数组中移除
    var key;
    for(var i=0;i<arr.length;i++){
      if(obj.id==arr[i]){
         key= i
      }
    }
    delete.arr[key]
      

  3.   

    恩,是的“如果选中就将该项id插入数组,未选中就将该项id从数组中移除”  我有点笨,没看懂。呵呵。
    你的方法是不是少了判断OBj是否是选 中状态啊。
      

  4.   


    看的需求完全可以这样做
    function SelectIds(Obj)

      var temp = "";
      if(Obj.checked==true)
      {
          temp += obj.val + ","   
      }
      return temp;
    }
    var ids = SelectIds(checkbox);
    window.parent.document.getElementById("lblid").value=ids;
    alert(window.parent.document.getElementById("lblid").value) 现在的问题是可以添加上,但删除不了 delete ary[Obj.id]; 这句话删除不了。有什么办法可以解决 ?
    }pop()删除第一个
    shift删除最后一个
      

  5.   

    下面这样做看是否是你需要的:
    var ary = new Array();
    function SelectIds(Obj) {
    if (Obj.checked == true) {
    ary.push(Obj.id);
    } else {
    //delete ary[Obj.id];
    ary.splice(ary.join(",").indexOf(Obj.id),1);
    }
    if (ary.length > 0) {
    /*var ids = "";
    for (var i = 0; i < ary.length; i++) {
    ids += ary[i].toString() + ",";
    }*/
    //这里可以修改成
    var ids=ary.join(",");
    }
    window.parent.document.getElementById("lblid").value = ids;
    alert(window.parent.document.getElementById("lblid").value)
    // 现在的问题是可以添加上,但删除不了 delete ary[Obj.id]; 这句话删除不了。有什么办法可以解决 ?
    }
      

  6.   

     delete ary[Obj.id];
    不是删除数组元素(arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])是)
    ,delete obj为了释放引用(等价obj=undefined),以便垃圾回收器释放内存资源
      

  7.   

    从来都是使用a[i]=null;来删除!
      

  8.   

    var ary = new Array();  
    function SelectIds(Obj){
      if(Obj.checked==true){
         ary.push(Obj.id);
      }
      else {
        for(var i = 0; i < ary.length; i++){
          if(Obj.id == ary[i]){
            ary.splice(i, 1);
          }
        }

      }
      if(ary.length>0)
      {
      var ids="";
      for(var i=0;i<ary.length;i++)
      {
      ids+=ary[i].toString()+",";
      }
      }
      

  9.   

     
    var temp="";
    function SelectIds(Obj)
    {
        if(Obj.checked==true)
        {
            temp += Obj.id + ",";
        }
        else
        {
            temp = temp.replace(Obj.id+",","");
        }
             window.parent.document.getElementById("lblid").value=temp;
            alert(window.parent.document.getElementById("lblid").value);
    }
    呵呵,经过我们经理提示,,原来很简单。。哎,,自愧不如啊。搞定了。呵呵