Greets,所以我正在尝试学习jquery / javascript存储并遇到一个问题,我正在构建一个应该记住的导航,如果你刷新页面就把你放在最后的位置(这就是为什么我使用sessionStorage而不是然后是localStorage)。
但我似乎无法将sessionStorage变量更改为新位置,也找不到让用户重新刷新页面的功能方法。
这就是我现在所拥有的。
$(function() {
sessionStorage.setItem('position', '.first');
var location = sessionStorage.getItem('position');
$('li', this).click(function() {
cls = $(this).text();
if('.' + cls != location) {
$(location).slideToggle(400);
$('.' + cls).delay(400).slideToggle(400);
sessionStorage.setItem('position', '.' + cls)
console.log(location)
};
});
});
https://jsfiddle.net/Unkn0wn96/ndj9sqpe/
代码以非常奇怪的方式工作,而不是它的预期方式,包括在我console.log(位置)时永远不会更改值。
我对此做了一些进一步的测试,发现了一个'更多'的工作方式,因为sessionStorage确实改变了某些东西,但它没有用处。
https://jsfiddle.net/Unkn0wn96/nkbtykkr/
但是,他们的元素并没有像他们应该的那样切换,包括当我控制日志sessionStorage.position时它会返回NaN。另外由于一些奇怪的原因我不能在变量中存储sessionStorage.position,它只是拒绝改变它的值。我不知道为什么会这样。
答案 0 :(得分:0)
所以我终于能够通过sessionStorage解决我的问题,因为我没有太多的帮助,我认为有关案例的信息有限,所以希望分享我的解决方案。所有人都认为它不能完全按照预期的方式执行它的主要功能。
$(function() {
$('button').on('click', function() {
var msg = '.'+$(this).text();
localStorage.setItem('color', 'blue') //Default (does not matter since the if statement does not register)
if(msg != '.' + localStorage.color) { // DOES NOT REGISTER
if(localStorage.length > 0) {
localStorage.removeItem('color')
console.log('localStorage.length : ' + localStorage.length)
};
localStorage.setItem('color', msg)
console.log(localStorage.color)
} else {
console.log('cancelled')
}
});
});
https://jsfiddle.net/mdqjoz69/4/
所以我最终能够实现的是使localStorage键改变它对你按下什么按钮的价值。
我未能实现的是能够检查存储的数据,以便在存储已存储的内容时不执行。可能有一个解决方法。但由于代码服务于其主要目的,我将让它滑动。