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