Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаление / добавление JSON (https://javascript.ru/forum/events/54484-udalenie-dobavlenie-json.html)

рони 21.03.2015 23:16

Цитата:

Сообщение от Alexander Belov
events.length >= 2 && (events.length=2)

if (events.length >= 2 ) {events.length=2}

так понятнее ? и эта строка служебная вам ненужна
Цитата:

Сообщение от Alexander Belov
Но как переделать функцию не на два события, а на не ограниченное количество? На столько, сколько будет введено пользователем?

функция пока ни на какое количество не сделана - это просто демонстрация, которая вас может быть на что-то натолкнёт.
вашей информации недостаточно чтоб сделать полноценную функцию и похоже вам в раздел работа.

Alexander Belov 21.03.2015 23:41

Теперь понятно.

Буду искать решение.

Alexander Belov 01.05.2015 22:45

Помогите, пожалуйста, разобраться в ситуации.
Ниже написан код, которые добавляет объекты в localStorage при условии, что в самом хранилище уже что-то есть.
Если там ничего нет, - в коде это строка if (myStorage.length == 0) {};
(тестирую, очистив предварительно localStorage), - то консоль выдаёт ошибку Uncaught SyntaxError: Unexpected end of input.

Интересует:
1) Почему строка с переменной var events = localStorage.getItem('events') || [];
не определяет пустой массив, если в localStorage ещё нет 'events'?

2) Как создать и прописать условие для if (myStorage.length == 0) {}; чтобы там создавался в localStorage пустой массив, если нет ещё сохранённых данных.
Оставил в коде специально пустое место после фигурных скобок.

Пробовал:
1) var myStorage = [];
2) var myStorage = myStorage.push({Date: "", Event: "", Participants: "", Description: ""});
localStorage.setItem('myStorage', JSON.stringify(myStorage));

P.S. Важная часть начинается с var events...

if (tdAttr) {

                        tdAttr.style.backgroundColor = 'green';
                        tdAttr.getElementsByTagName("span")[0].innerHTML = fastAddEvent.value;


                         var fastDate = tdAttr.getAttribute('data-cell');
                         var fastEvent = fastAddEvent.value;

                         var events = localStorage.getItem('events') || [];
                         

                          var addFastEvent = function() {
                        
                            var myStorage = JSON.parse(events);
           

                            if (myStorage.length == 0) {
                                
                            }

                            else if (myStorage.length > 0) {
     

                              for (var i = 0; i < myStorage.length; i++) {
      
                                  if (myStorage[i].Date == fastDate) {
                    
                                      myStorage[i].Event = fastEvent;
                                      myStorage[i].Participants = "";
                                      myStorage[i].Description = "";
                                
                                  };


                                  break;

                              };

  

                            };

                              localStorage.setItem('events', JSON.stringify(myStorage));


                          };

                          addFastEvent();
                      };

рони 01.05.2015 23:21

Alexander Belov,
строка 10 где кавычки потеряли? "[]"

Alexander Belov 01.05.2015 23:41

Цитата:

Сообщение от рони (Сообщение 369029)
Alexander Belov,
строка 10 где кавычки потеряли? "[]"

Кавычки - это для строки, если я правильно понимаю. С кавычками ошибка исчезает. Но не очень понятно, почему не создаётся объект, если без кавычек.

У меня аналогичный коды выше. Там потом в такую же переменную добавляются события посредством
events.push({Date: storageNewDate, Event: storageEvent, Participants: storageParticipants, Description: storageDescription});


Т.е., в объект мы передаём значения. И там была так же объявлена переменная:
var events = JSON.parse(localStorage.getItem('events')) || [];
Если там скобки взять в кавычки, то метод push() не будет работать.

рони 01.05.2015 23:46

Alexander Belov,
вы запутались
либо
var events = JSON.parse(localStorage.getItem('events')) || [];

тут кавычки ненужны
либо
var events = localStorage.getItem('events') || "[]";
var myStorage = JSON.parse(events);

здесь без кавычек никак

Alexander Belov 01.05.2015 23:51

Благодарю за помощь!
Плюсы не могу ставить вам в карму временно.


Часовой пояс GMT +3, время: 03:57.