Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Отображать данные после перезагрузки страницы (https://javascript.ru/forum/events/54310-otobrazhat-dannye-posle-perezagruzki-stranicy.html)

Alexander Belov 13.03.2015 00:20

Отображать данные после перезагрузки страницы
 
Привет!
Помогите, пожалуйста, разобраться с ситуацией:
Есть органайзер, в который можно добавить события, указать участников этого события и добавить его описание. Это события сохраняются в localStorage и хранятся там в виде объекта.
Каким образом сделать так, чтобы при перезагрузке страницы (или при переходе на другой месяц, например) введённые данные отображались в нужной ячейке?


if(localStorage.events) {
      var existEvents = JSON.parse(localStorage.getItem('events'));//Событие, его дата, участники и описание

        var checkCell = document.getElementsByTagName('td');
        for(n=0; n<checkCell.length; n++) {
        var compareCell = checkCell[n].getAttribute('data-cell');//Cells date Attribute

          for(i=0; i<existEvents.length; i++) {
            var item = existEvents[i];

              if(item.Date == compareCell) {//Если дата совпадает с аттрибутом ячейки, то выводим сохранённое обытие + его участников + описание
                var showEvent = checkCell[n].getElementsByClassName('spanEvent'),
                    showParticipants = checkCell[n].getElementsByClassName('spanParticipants'),
                    showDescription = checkCell[n].getElementsByClassName('spanDescription');

                showEvent.innerHTML = item.Event;
                showParticipants.innerHTML = item.Participants;
                showDescription.innerHTML = item.Description;
  
                console.log(showEvent, showParticipants, showDescription)
              };
            
          };
              
            
        }; 

    };


Код
showEvent.innerHTML = item.Event;
showParticipants.innerHTML = item.Participants;
showDescription.innerHTML = item.Description;


не работает так, как я ожидаю, т.е., не выводит сохранённые данные в положенное место в ячейке.
Консоль на каждое событие выдаёт массив типа:
[span.spanEvent, innerHTML: "Scooter gig", item: function, namedItem: function] [span.spanParticipants, innerHTML: "Rave guys", item: function, namedItem: function] [span.spanDescription, innerHTML: "Dancing to the floor", item: function, namedItem: function]


Каким образом из этого массива вытянуть данные тегов <span>, чтобы они отображались по умолчанию в ячейке и оставались там после перезагрузке / обновления страницы?

рони 13.03.2015 00:49

Цитата:

Сообщение от Alexander Belov
getElementsByClassName

это коллекция элементов и нет у неё innerHTML

var showEvent = checkCell[n].getElementsByClassName('spanEvent')[0],

danik.js 13.03.2015 07:37

Цитата:

Сообщение от Alexander Belov
checkCell[n].getElementsByClassName('spanEvent')

checkCell[n].querySelector('.spanEvent')

Так короче, да еще и в IE8 заработает.

Alexander Belov 13.03.2015 22:13

Спасибо, парни! Очень выручили.


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