2013-07-29 2 views
1

Я успешно создаю объект jquery, а затем сохраняю объект как строку json в локальной переменной хранилища, используя следующий код, который перебирает список и добавляет элементы в переменную myObject, а затем сохраняет объект в локальная переменная хранения.Структура объекта JSON

var x =$("[name=checklist]").length; 
var myObject = {}; 
myObject.Vehicle_Check = [x]; 

$("[name=checklist]").each(function(index){ 
    if (index >0) { 
    myObject.Vehicle_Check.push({}); 
var PT = $("[name=problemtxt_" + index + "]").val(); //the fault label 
var CL = $("[name=checklbl_" + index + "]").text(); //the question 
var d = $("[name=optiongroup_" + index + "]:checked").val(); 
    if (d == 'Item 1') { 
     d='OK' 
    } 
    else if (d == 'Item 2') { 
     d='Fault' 
     localStorage.setItem('fault', 1); 
    } 
    myObject.Vehicle_Check[index].question = CL; 
    myObject.Vehicle_Check[index].result = d; 
    myObject.Vehicle_Check[index].Fault = PT; 
    } 
}); 

localStorage.setItem('results' ,JSON.stringify(myObject)); 

Я попытался сделать то же самое, построив объект на один пункт в то время, сохраняя его в локальную переменную для хранения тогда, когда я хочу добавить еще один пункт получения объекта обратно из переменной с помощью parseJSON и добавляя дополнительный элемент, а затем возврат к переменной. У меня это работает неправильно. Как я должен правильно это построить?

Initiate the object: 

var myObject = {}; 
myObject.Vehicle_Check = [18]; 
myObject.Vehicle_Check.push({}); 
localStorage.setItem('checkobject',JSON.stringify(myObject)); 

Add to the object: 

var myObject = jQuery.parseJSON(localStorage.getItem('checkobject')); 
       myObject.Vehicle_Check.push({}); 
       myObject.Vehicle_Check[I].question = 'First test!'; 
       myObject.Vehicle_Check[I].result = 'OK'; 
       myObject.Vehicle_Check[I].Fault = 'none'; 
      localStorage.setItem('checkobject',JSON.stringify(myObject)) 
+0

отлично работает для меня, как только я правильно определить 'I' –

+0

Почему вы не установили переменную нового подъобекта, заполнить его свойства, а затем поместить его на массив? – Barmar

ответ

1

Вы не указали I. Вы могли бы сделать что-то вроде этого, а не так что вам не придется беспокоиться об индексе:

var myObject = {}; 
myObject.Vehicle_Check = []; 
localStorage.setItem('checkobject', JSON.stringify(myObject)); 

...

var myObject = jQuery.parseJSON(localStorage.getItem('checkobject')); 
var next = { 
    question: 'First test!', 
    result: 'OK', 
    Fault: 'none' 
}; 
myObject.Vehicle_Check.push(next); 
localStorage.setItem('checkobject', JSON.stringify(myObject)); 

Edit - Это могло бы упростить еще дальше, в зависимости от вашего использования:

myObject.Vehicle_Check.push({ 
    question: 'First test!', 
    result: 'OK', 
    Fault: 'none' 
}); 
+0

Извините, что я определил, но не включил код! Я пойду с вашим кодом, - спасибо. – joebohen

+0

Спасибо за код, который именно то, что мне нужно, – joebohen

+0

Рад, что я мог бы помочь. –