количество атрибутов xml-> javascript multi array-> function / process

0

У меня есть комментарии в базе данных относительно каждого сообщения. Он извлекает сообщение и все комментарии в соответствии с этим сообщением в одном запросе и группирует их внутри узла 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 

Теперь, как я могу загрузить его в многомерный массив для хранения данных, передать его функции и затем обрабатывать каждую строку отдельно?

т.е.: это то, что я пытаюсь сделать:

Array {
    'comment1':
        comment
        commentdate
        commentauthor
    'comment2':
        comment
        commentdate
        commentauthor
}

и как я смогу обрабатывать каждый комментарий внутри функции? т.е.: с каждым комментарием, сделайте это.

Заранее спасибо!

  • 0
    Это действительно не разумное использование атрибутов XML!
  • 1
    Почему вы хотите иметь комментарии1 и комментарии2 ??? просто сделайте массив и используйте это ..
Показать ещё 5 комментариев
Теги:
arrays

1 ответ

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);
    }
//}
  • 0
    Я попробовал это, затем я передаю массив comms в функцию, но как мне «расшифровать» его внутри этой функции?
  • 0
    Если ваш вызов myFunc(comms) , то вы можете получить к нему доступ, например, к определенному элементу, например, function myFunc (comms) {alert(comms[0][0]);} . Обратите внимание , что вы можете переименовать comms во втором случае. В противном случае, я не уверен, что вы спрашиваете ...
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню