这是原始代码,当页面加载的时候,读取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;
});
原始的代码是没有错误的,代码是网络中找的。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;
});
javascript遵循“凡事皆对象”的原则,不仅是数组,连函数都是一个对象。
直接return,没问题。
getListID() // 这里我也不知道该怎么写才能返回一个数组 用return getListID();
但是我觉得我的 getListID()里面的绑定数组就是写错了的请问这个应该怎么写??
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(',')};