我在每个帖子的数据库中都有评论。它在一个查询中根据该帖子提取帖子和所有评论,并将它们分组到XML节点中。我获得了每个节点中的属性数量,并删除了每个帖子默认拥有的标准数量的属性,并留下了评论数量。
评论结构如下:
comment0 Hey nice post!
commentdate0 2014-12-1 08:25:02
commentaudthor0 Chris
comment1 cool!
commentdate1 2014-08-2 09:25:02
commentaudthor1 Jason
等等,评论会增加该数字。
所以我需要检查有多少条评论(已完成),然后从xml节点检索它们(使用$(this).attr('comment'+i)
)我将成为计数器(comment0, comment1
等等)
这是我当前的代码,以便将它放入数组中:
var comms = new Array();
var count = this.attributes.length;
var av = count-11;
if(av != 0) {
for(var i=0; i<av; i++) {
for(var j=0; j<2; j++){
comms[i][j] = $(this).attr('comment'+i);
comms[i][j+1] = $(this).attr('commentdate'+i);
comms[i][j+2] = $(this).attr('commentauthor'+i);
}
}
}
但它给了我以下错误:
Uncaught TypeError: Cannot set property '0' of undefined
现在,如何将其加载到多维数组中以存储数据,将其传递给函数,然后单独处理每一行?
ie:这就是我想要做的事情:
Array {
'comment1':
comment
commentdate
commentauthor
'comment2':
comment
commentdate
commentauthor
}
然后我将如何处理函数内的每个注释?即:每次评论都要这样做。
提前致谢!
答案 0 :(得分:0)
您需要在添加内部数组之前创建内部数组。试试这个:
var comms = new Array();
var count = this.attributes.length;
var av = count-11;
//if(av != 0) { // I commented this condition out, as it is not needed here
for(var i=0; i<av; i++) {
comms[i] = []; // Create a new array here before adding to it (this syntax is more common than the longer "new Array()" syntax you used
comms[i][0] = $(this).attr('comment'+i);
comms[i][1] = $(this).attr('commentdate'+i);
comms[i][2] = $(this).attr('commentauthor'+i);
}
//}