Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2017, 15:02
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

Не запоминает localstorage
Всем добра, господа знатоки. Суть такова: Имеется код плеера с сериями вида:


<div class="block1">
<a onclick="vidLoc('url_video','1','0')">1</a>
<a onclick="vidLoc('url_video','1','0')">2</a>
<a onclick="vidLoc('url_video','1','0')">3</a>
<a onclick="vidLoc('url_video','1','0')">4</a>
</div>


Имеется блок, содержащий id конкретной страницы:
<div class="wrapper" id="id123"></div>


И скрипт, который находит значение этого уникального id для каждой страницы и используется для запоминания состояния нажатой серии.
$(function(){
var indxid = $(".wrapper:first").attr('id');
var a=$(".block1 > a"),indxid=localStorage.getItem("indxid");
   a.on("click",function(){a.not($(this).addClass("eps")).removeClass("eps");
      $(".eps").parent().css( "display", "block");
      indxid=a.index(this);
      $(".nezapomn").removeClass("nezapomn").addClass("zapomn");
      document.getElementById('zapominalka').innerHTML = "Забыть серию";
      localStorage.setItem("indxid",indxid)});
   indxid!==null&&a.eq(indxid).click();
});


Запоминалка работает, но не так как нужно: если на одной странице я выберу серию 1, то на другой странице тоже будет выбрана серия 1. Получается, что нет уникального ключа для localstorage, а как мне его тогда задать?!

Последний раз редактировалось Nezumi.May, 10.02.2017 в 16:19.
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2017, 16:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Но почему используется индекс набора, а не уникальный id?
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2017, 16:47
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

Сообщение от laimas Посмотреть сообщение
Но почему используется индекс набора, а не уникальный id?
Поясните? Было перебрано много вариантов, главным из которых было использовать уникальный id со страницы в качестве ключа для localstorage, а содержимое ключа = индекс ссылки, которая была нажата.

Причём в таком виде всё работает как надо:
$(function(){
var a=$(".block1 > a"),btn=$(".btn"),indx$ID$=localStorage.getItem("indx$ID$");
   a.on("click",function(){a.not($(this).addClass("eps")).removeClass("eps");
      $(".eps").parent().css( "display", "block");
      indx=a.index(this);
      var indxid = $(".wrapper:first").attr('id');
      localStorage.setItem("indx$ID$",indx)});
   indx$ID$!==null&&a.eq(indx$ID$).click();
alert (indx$ID$)
});


Где $ID$ - порядковый номер материала. Но мне нужно добавить код удалённо (<script src="url.js"></script>), а не на странице эту страсть хранить. И тут-то нашла коса на камень.
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2017, 16:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Nezumi.May
Имеется блок, содержащий id конкретной страницы:
<div class="wrapper" id="id123"></div>
И скрипт, который находит значение этого уникального id для каждой страницы и используется для запоминания состояния нажатой серии.
А a.index(this) - это индекс элемента в наборе. Ну если нужно использовать id, значит

localStorage["indx$ID$"] = this.id


Или причем тут тогда уникальность?
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2017, 16:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Пока писал, добавлено действительно по ID.

Сообщение от Nezumi.May
Но мне нужно добавить код удалённо
И проблема с чем, с идентификаторами которых не будет при этом в скрипте?
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2017, 17:01
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

Сообщение от laimas Посмотреть сообщение
А a.index(this) - это индекс элемента в наборе. Ну если нужно использовать id, значит

localStorage["indx$ID$"] = this.id


Или причем тут тогда уникальность?
Просто этот индекс распространяется на все страницы. Если на странице номер 1 выбрана серия 1, то на странице номер 2 тоже будет выбрана серия 1. И я не понимаю как сделать так, чтобы на стр.1 была серия 25, а на стр.2 была, например, 3 серия.

С помощью id страницы собиралась сделать уникальным ключ localstorage, чтобы для каждой страницы был свой ключ, со своим значением index. Не получается внешним файлом никак.
Ответить с цитированием
  #7 (permalink)  
Старый 10.02.2017, 17:04
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

Цитата:
И проблема с чем, с идентификаторами которых не будет при этом в скрипте?
Да, во внешнем файле нет $ID$, а его значение пыталась получить через var indxid = $(".wrapper:first").attr('id');
Ответить с цитированием
  #8 (permalink)  
Старый 10.02.2017, 17:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Nezumi.May
Если на странице номер 1 выбрана серия 1, то на странице номер 2 тоже будет выбрана серия 1. И я не понимаю как сделать так, чтобы на стр.1 была серия 25, а на стр.2 была, например, 3 серия.
Вот что. Ну так для этого и индексов хватит, но вкупе с другим параметром. То есть нужно запоминать страницу и выбранный на ней индекс.
Ответить с цитированием
  #9 (permalink)  
Старый 10.02.2017, 17:26
Аватар для Nezumi.May
Аспирант
Отправить личное сообщение для Nezumi.May Посмотреть профиль Найти все сообщения от Nezumi.May
 
Регистрация: 10.01.2017
Сообщений: 36

Сообщение от laimas Посмотреть сообщение
Вот что. Ну так для этого и индексов хватит, но вкупе с другим параметром. То есть нужно запоминать страницу и выбранный на ней индекс.
Наверное, я не так хорошо в этом разбираюсь. Просто не понимаю почему так работает:

$(function(){
var a=$(".block1 > a"),btn=$(".btn"),indx$ID$=localStorage.getItem("indx$ID$");
   a.on("click",function(){a.not($(this).addClass("eps")).removeClass("eps");
      $(".eps").parent().css( "display", "block");
      indx=a.index(this);
      var indxid = $(".wrapper:first").attr('id');
      localStorage.setItem("indxid",indx)});
   indx$ID$!==null&&a.eq(indx$ID$).click();
});


А во внешнем файле нет:

$(function(){
var mat = $(".wrapper:first").attr('id');
var a=$(".block1 > a"),btn=$(".btn"),indxid=localStorage.getItem("indx+mat");
   a.on("click",function(){a.not($(this).addClass("eps")).removeClass("eps");
      $(".eps").parent().css( "display", "block");
      indxid=a.index(this);
      localStorage.setItem("indx+mat",indxid)});
   indx+mat!==null&&a.eq(indx+mat).click();
});
Ответить с цитированием
  #10 (permalink)  
Старый 10.02.2017, 17:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Я не знаю что там за внешний файл, но если к каждой странице нужно соответствие своего выбора, то и плодить кучу ключей не надо, да привязать можно проще. Если

<div id="уникальный на каждой странице" class="block1">

то в хранилище нужно держать один объект, в котором будут храниться данные как id=>index. Естественно что при записи сохраняем его в JSON, а при получении получаем из него объект.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли использовать значение из localstorage в PHP smart-create Events/DOM/Window 12 07.11.2016 02:54
LocalStorage удаление данных neon_tmn Общие вопросы Javascript 8 21.10.2016 15:22
После добавления localstorage в backbone модель, POST запрос ничего не возвращает aphex Общие вопросы Javascript 0 03.12.2013 15:26
Обход элементов localStorage berserk10 Events/DOM/Window 8 11.08.2013 14:55
Не сохраняется localStorage после перезагрузки браузера Бобр Firefox/Mozilla 1 20.10.2011 20:31