xml属性的数量 - > javascript多数组 - >函数/进程

时间:2014-02-20 13:28:06

标签: javascript jquery xml arrays

我在每个帖子的数据库中都有评论。它在一个查询中根据该帖子提取帖子和所有评论,并将它们分组到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
}

然后我将如何处理函数内的每个注释?即:每次评论都要这样做。

提前致谢!

1 个答案:

答案 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);
    }
//}