SessionStorage导航

时间:2017-11-07 22:08:45

标签: javascript jquery html

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,它只是拒绝改变它的值。我不知道为什么会这样。

1 个答案:

答案 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键改变它对你按下什么按钮的价值。

我未能实现的是能够检查存储的数据,以便在存储已存储的内容时不执行。可能有一个解决方法。但由于代码服务于其主要目的,我将让它滑动。