есть такой контент
<div class='question' type='text' data-question='вопрос'>вопрос
<div class='answer' type='text' data-answer='ответ 1'>ответ 1</div>
<div class='answer' type='text' data-answer='ответ 2'>ответ 2</div>
</div>
<div class='question' type='text' data-question='вопрос 2'>вопрос 2
<div class='answer' type='text' data-answer='ответ 3'>ответ 3</div>
<div class='answer' type='text' data-answer='ответ 4'>ответ 4</div>
</div>
<h1 id='upload' style='text-align:center; display:block;'>ok</h1>
Нужно пройтись по всем блокам, собрать данные и добавить их в массив. Я сделал так
var testList = {};
var i = 0;
$('#upload').on('click', function() {
$('.question').each(function(){
i = i+1;
var cur_el = $(this);
var question = cur_el.attr('data-question');
testList[i] = {
'testName' : 'Тест',
'questionsList' : {
'question' : question,
'answerList' : {}
}
};
var y = 0;
cur_el.find('.answer').each(function(){
y = y+1;
var answer = $(this).attr('data-answer');
console.log(y);
testList.i.answerList.y.push( {'answer' : answer} );
});
});
console.log(testList);
});
Но вылетает ошибка TypeError: testList.i is undefined. Подскажите как решить эту задачу. На выходе должны получить такой массив
testList[1] = {
'testName' : 'Тест',
'questionsList' : {
0 : {
'question' : 'Вопрос 1',
'answerList' : {
0 : {
'answer' : 'Ответ 1'
},
1 : {
'answer' : 'Ответ 2'
}
}
},
1 : {
'question' : 'Вопрос 2',
'answerList' : {
0 : {
'answer' : 'Ответ 3'
},
1 : {
'answer' : 'Ответ 4'
}
}
}
}
};