在本地storage.getItem甚至thow我有多个记录后我总是得到array.lenght 1

时间:2018-01-26 09:08:08

标签: jquery arrays local-storage

我有一个菜单,每次我点击链接时,它会在数组中添加索引,并将此数组保存在本地存储中。当我刷新页面时,我有一个脚本,它将数据恢复并再次存储在我的数组中。虽然我的脚本正常工作,但当我提醒我的表时,它会向我显示所有已经添加过的记录,当我要求我的table.length时它总是返回1.我做错了什么;;;;

    jQuery(document).ready(function( $ ) {
    "use strict";
    var history = [ ]; // This is my array

这里我在页面刷新后从本地存储中获取数据

    var retrievedData = localStorage.getItem('history');
    var times = JSON.parse(retrievedData);

如果有任何

,我在这里添加记录
    if (times !== null) {
    history.push(times);
    }

    alert(history.length); // it always return 1

这是click函数,它获取单击它的菜单项的索引并将其添加到我的数组中并将数组保存在本地存储中

      var pushed = $('.active li');
      pushed.click (function() {
        var index = pushed.index( this );
        history.push(index);
        localStorage.setItem("history", JSON.stringify(history));
     });

    });

我还想提一下,当我在添加多条记录后从开发人员工具查看我的本地存储时,数据会以这种方式显示

 [[0],1]

这是我的HTML

    <nav class="navigation active">

        <ul>

            <li><a href="index2.html"><span>Privacy</span></a></li>

            <li><a href="index.html"><span>Sitemap</span></a></li>

            <li><a href="#"><span>Newsletter</span></a></li>

            <li class="account"><a href="#"><span>My Account</span></a></li>

        </ul>

    </nav>

提前谢谢!!!!

2 个答案:

答案 0 :(得分:0)

我认为这部分应该是这样的:

  var pushed = $('.active li'),
      history = JSON.parse(localStorage.getItem('history'));
  pushed.click (function() {
    var index = pushed.index( this );
    history.push(index);
  });
  localStorage.setItem("history", JSON.stringify(history));

});

答案 1 :(得分:0)

问题在于我将数组推入另一个数组

if (times !== null) {
history.push(times);
}

我删除了那部分并将其替换为

history = times;