Не запоминает 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, а как мне его тогда задать?! |
Но почему используется индекс набора, а не уникальный id?
|
Цитата:
Причём в таком виде всё работает как надо:
$(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>), а не на странице эту страсть хранить. И тут-то нашла коса на камень. |
Цитата:
localStorage["indx$ID$"] = this.id Или причем тут тогда уникальность? |
Пока писал, добавлено действительно по ID.
Цитата:
|
Цитата:
С помощью id страницы собиралась сделать уникальным ключ localstorage, чтобы для каждой страницы был свой ключ, со своим значением index. Не получается внешним файлом никак. |
Цитата:
|
Цитата:
|
Цитата:
$(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();
});
|
Я не знаю что там за внешний файл, но если к каждой странице нужно соответствие своего выбора, то и плодить кучу ключей не надо, да привязать можно проще. Если
<div id="уникальный на каждой странице" class="block1"> то в хранилище нужно держать один объект, в котором будут храниться данные как id=>index. Естественно что при записи сохраняем его в JSON, а при получении получаем из него объект. |
| Часовой пояс GMT +3, время: 13:23. |