这是原始代码,当页面加载的时候,读取cookie,如果cookie没有值就加载默认的数组。
原始的代码是没有错误的,代码是网络中找的。Object.addEvent(window, ["onload"], function () {
    var wc = new CDrag,
        
        json = /CDrag=([^;]+)(?:;|$)/.test(document.cookie) ? eval('(' + unescape(RegExp.$1) + ')') : [
        
        {
            cols : "mold_1", rows : ["url_1_1", "url_1_2", "url_1_3", "url_1_4"]
        },
        
        {
            cols : "mold_2", rows : ["url_2_1", "url_2_2","url_3_2",  "url_2_3", "url_2_4"]
        },
        
        {
            cols : "mold_3", rows : ["url_3_1", "url_3_3", "url_3_4"]
        },
        
        {
            cols : "mold_4", rows : ["url_4_1", "url_4_2", "url_4_3", "url_4_4"]
        }
        
    ];
    wc.parse(json);
    wc = null;
});现在问题是:这个加载的数组我需要动态生成,就是那些id都是动态的,我应该怎么写这个数组?
我自己也写了一个,可是总是不对。
这是我写的: function getListID()
    {
    
        var obj=Default3.reidTb();   //返回一个栏目dataTable
        var ds=obj.value;
        var tbl = ds; 
        var rowsTxt;
        var a=[];
        for(i=0;i<tbl.Rows.length;i++)
        { 
            var obj2=Default3.reidArr(tbl.Rows[i]["id"]);  // 根据栏目id返回一个新的数据dataTable            var tbl2=obj2.value;
            
            for(j=0;j<tbl2.Rows.length;j++)
            {
                if(rowsTxt=="")
                {
                    rowsTxt="url_"+tbl.Rows[i]["id"]+"_"+tbl2.Rows[j]["id"];  //这里是想绑定成为 url_4_1 这样的效果,4 是栏目id,
                }
                else
                {
                    rowsTxt=rowsTxt+",";
                    rowsTxt="url_"+tbl.Rows[i]["id"]+"_"+tbl2.Rows[j]["id"];
                }
            }
             a[i] = "{cols:'mold_" + tbl.Rows[i]["id"] + "',rows:[" + rowsTxt + "]}";             }
            
        }
        return  a;   //返回数组 这么写对吗???    }
    Object.addEvent(window, ["onload"], function () {
    var wc = new CDrag,
        
        json = /CDrag=([^;]+)(?:;|$)/.test(document.cookie) ? eval('(' + unescape(RegExp.$1) + ')') : [
        getListID()    // 这里我也不知道该怎么写才能返回一个数组
    ];
    wc.parse(json);
    wc = null;
});

解决方案 »

  1.   

    【个人意见,仅供参考】
    javascript遵循“凡事皆对象”的原则,不仅是数组,连函数都是一个对象。
    直接return,没问题。
      

  2.   

    【个人意见,仅供参考】
    getListID()    // 这里我也不知道该怎么写才能返回一个数组 用return getListID();
      

  3.   

    谢谢楼上两位帮忙
    但是我觉得我的 getListID()里面的绑定数组就是写错了的请问这个应该怎么写??
      

  4.   

    【个人意见,仅供参考】
    getListID写的有点问题。
    a[i] = "{cols:'mold_" + tbl.Rows[i]["id"] + "',rows:[" + rowsTxt + "]}"; 这句话使得你的数组仅仅是字符串的数组。而不是对象的数组。
    另外,拼接起来的字符串应该包含引号。
    试一试(没有验证)for(j=0;j <tbl2.Rows.length;j++) 

    if(rowsTxt=="") { 
    rowsTxt="'url_"+tbl.Rows[i]["id"]+"_"+tbl2.Rows[j]["id"]+"'";  //这里是想绑定成为 url_4_1 这样的效果,4 是栏目id, 
    } else { 
    rowsTxt=rowsTxt+","; 
    rowsTxt+="'url_"+tbl.Rows[i]["id"]+"_"+tbl2.Rows[j]["id"]+"'"; 


    a[i] = {cols:"'mold_" + tbl.Rows[i]["id"] + "'",rows:rowsTxt.split(',')};