var ary = new Array(); 
function SelectIds(Obj)
{
    var key;
    if(Obj.checked==true)
    {
        ary.push(Obj.id);
            alert(ary.length);
    }
    else
    {
       for(var i=0;i<ary.length;i++)
       {
            if(Obj.id==ary[i])
            {
                key= i
            }
            delete ary[key];
       }
      alert(ary.length); 
    }
    var count=ary.length;
    if(count >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[key];之后,ary的length还是原来的?

解决方案 »

  1.   

    为什么用数组啊!数组结果在这里并不合适!直接用map
    var map = new Object();
    func test(id1){
    if(id1 选中)  map.id1=true;
    if(id2 未选中) map.id1=false;
    }最后Map中含有所有选中和未选中的元素,例如遍历所有选中的
    var arrid =[];
    for(var id in map){
      if(map[id]==true) arrid.push(map[id]);
    }最后arrid数组存放的就是所有的选中的id.对于去重这种需求,Map才是最佳结构!上面代码基本上是伪代码,表达下意识。
      

  2.   

    var ary = new Array(); 
    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);
    }
    呵呵,经过经理的指点,,,,原来这么简单,搞定啦,谢谢啦。
      

  3.   


    刚才有个人,思路跟这个类似(lz好像发了两次,就这个问题)
    Array.prototype.indexOf=function(obj){
    for(var i=0;i<this.length;i++){
    if(this[i]===obj)
    return i;
    }
    return -1;
    }
    var arr = new Array(); 
    function SelectIds(obj){
      obj.checked?arr.push(obj.id):arr.splice(arr.indexOf(obj.id),1);
      alert(arr.join());
    }
      

  4.   

    var arr=[1,2,3,4];
    arr.splice(1,1);//delete index=1
    alert(arr.length);
      

  5.   

    lz试试这样
    var o = new Object(); 
    function SelectIds(Obj)
    {
      if(Obj.checked==true){
       o[Obj.id]=Obj.id;
      }else{
        delete o[Obj.id]; 
      }
      var ids="";
      for(var i in o){
       if(ids!=""){
    ids+=",";  
       }
       ids+=o[i];
      }
      window.parent.document.getElementById("lblid").value=ids;
      alert(window.parent.document.getElementById("lblid").value);
      }
    }