Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.08.2016, 05:59
wet wet вне форума
Интересующийся
Отправить личное сообщение для wet Посмотреть профиль Найти все сообщения от wet
 
Регистрация: 12.07.2016
Сообщений: 14

Нужно добавить новые ключи и значения в многомерный массив
есть такой контент
<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'
                    }
                }
            }
        }
    };
Ответить с цитированием
  #2 (permalink)  
Старый 11.08.2016, 08:04
wet wet вне форума
Интересующийся
Отправить личное сообщение для wet Посмотреть профиль Найти все сообщения от wet
 
Регистрация: 12.07.2016
Сообщений: 14

Решено
$('#upload').on('click', function() {
		$('.question').each(function(i){
			var cur_el = $(this);
			var question = cur_el.attr('data-question');
			
			testList[i] = {
					testName : 'Тест',
					questionsList : {
						question : question,
						answerList : {}
					}	
				};
			
			cur_el.find('.answer').each(function(y){
				var answer = $(this).attr('data-answer');
				
				testList[i]['questionsList']['answerList'][y] = {answer : answer};
			});	
		});

		console.log(testList);		
	});
Ответить с цитированием
  #3 (permalink)  
Старый 11.08.2016, 08:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

wet,
{
  "testName": "Тест",
  "questionsList": {
    "0": {
      "question": "вопрос",
      "answerList": {
        "0": "ответ 1",
        "1": "ответ 2"
      }
    },
    "1": {
      "question": "вопрос 2",
      "answerList": {
        "0": "ответ 3",
        "1": "ответ 4"
      }
    }
  }
}


var testList = {
    testName: "Тест",
    questionsList: {}
};
$(".question").each(function(b, c) {
    var a = {},
        d = $(this).data("question");
    a.question = d;
    a.answerList = {};
    $(".answer", c).each(function(b, c) {
        a.answerList[b] = $(c).data("answer")
    });
    testList.questionsList[b] = a
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсивно добавить в массив Nightmare Общие вопросы Javascript 12 15.09.2011 17:07
Многомерный массив javascript simple Общие вопросы Javascript 20 03.11.2010 02:11
Нужно подключить в ссылку значения checkbx (value) speen Элементы интерфейса 0 29.07.2010 15:13
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Нужно добавить блокировку ссылки на время выполнения скрипта aidka Events/DOM/Window 1 02.08.2009 20:11