【问题标题】:Storing lists in localstorage在本地存储中存储列表
【发布时间】:2014-10-31 23:37:58
【问题描述】:

我正在尝试创建一个页面,其中页面上每个无序列表中的项目都存储在本地存储中。到目前为止,我只能存储一个列表。

我的问题是我不知道如何存储多个元素 ID。

这是我正在使用的代码,'m1s1w1' 是无序列表的 id。

$(document).ready(function() {
    var list = document.getElementById('m1s1w1');
    $("#saveAll").click(function(e) {
        e.preventDefault();
        localStorage.setItem('todoList', list.innerHTML);
    });
    $("#clearAll").click(function(e) {
        e.preventDefault();
        localStorage.clear();
        location.reload();
    });

    loadToDo();

    function loadToDo() {
      if (localStorage.getItem('todoList')){
        list.innerHTML = localStorage.getItem('todoList'); 
    }
    }

});

要温柔。我搜索了几个小时,但我对此还是很陌生。

编辑:这是 HTML。列表有很多:'m1s1w1'、'm1s1w2'等。为简洁起见,我删除了一些列表项。

<div id="tabs">
<ul>
    <li><a href="#tabs1">M1</a></li>
    <li><a href="#tabs2">M2</a></li>
    <li><a href="#tabs3">M3</a></li>
    <li><a href="#tabs4">M4</a></li>
    <li><a href="#tabs5">M5</a></li>
    <li><a href="#tabs6">M6</a></li>
</ul>
<div id="tabs1">
    <div id="m1semester1" class="accordion">
        <h3>Semester 1</h3>
            <div>
                <ul id="m1s1w1" class="sortable">
                    <p>Week 1</p>
                    <li class="ui-state-default">
                        <span class="ui-icon ui-icon-arrow-4"></span>
                        <span class="ce">Item 1</span>
                    </li>
                </ul>
                <ul id="m1s1w2" class="sortable">
                    <p>Week 2</p>
                    <li class="ui-state-default">
                        <span class="ui-icon ui-icon-arrow-4"></span>
                        <span class="ce">Item 1</span>
                    </li>
                </ul>
            </div>
    </div>
    <div id="m1semester2" class="accordion">
        <h3>Semester 2</h3>
            <div>
                <ul id="m1s2w1" class="sortable">
                    <p>Week 1</p>
                    <li class="ui-state-default">
                        <span class="ui-icon ui-icon-arrow-4"></span>
                        <span class="ce">Item 1</span>
                    </li>
                </ul>
                <ul id="m1s2w2" class="sortable">
                    <p>Week 2</p>
                    <li class="ui-state-default">
                        <span class="ui-icon ui-icon-arrow-4"></span>
                        <span class="ce">Item 1</span>
                    </li>

                </ul>
            </div>
    </div>
    <p>
        <button id="saveAll">Save All</button> |
        <button id="clearAll">Clear All</button>
    </p>
</div>

【问题讨论】:

  • 那么列表有很多吗?我们可以看到 html 吗?
  • 您的代码按预期工作:有什么问题?

标签: html jquery list html-lists


【解决方案1】:

如果我理解正确,您可以遍历列表并将其内容保存为数组:

$(document).ready(function() {

  $("#saveAll").click(function(e) {
    e.preventDefault();
    var listContents = [];
    $("ul").each(function(){
       listContents.push(this.innerHTML);
    })
    localStorage.setItem('todoList', JSON.stringify(listContents));
  });

  $("#clearAll").click(function(e) {
    e.preventDefault();
    localStorage.clear();
    location.reload();
  });

  loadToDo();

  function loadToDo() {
    if (localStorage.getItem('todoList')){
        var listContents = JSON.parse(localStorage.getItem('todoList'));
        $("ul").each(function(i){
          this.innerHTML = listContents [i];
        })
    }
  }
});

【讨论】:

  • 那么,我将每个列表添加到数组中,然后使用 JSON 来存储数组?这实际上很有意义。谢谢。
  • 您将内容存储在一个数组中。 localStorage 只能存储字符串,因此我们使用JSON.stringify() 将其转换为字符串,并在检索到字符串后使用JSON.parse() 将其转换回数组
  • 有没有办法将附加项目包含到 localStorage?我创建了一个按钮来添加新的无序列表(效果很好),但是那些新的无序列表不包含在发送到 localStorage 的项目中。有什么想法吗?
  • @mnaputi 如果您单击#saveAll,那么这些也应该被保存...$("ul") 将在DOM 中找到所有&lt;ul&gt;,无论何时添加...
  • 如果您发布一个包含jsfiddle的最新代码的新问题会更好
猜你喜欢
  • 1970-01-01
  • 2011-12-13
  • 2014-05-10
  • 2016-05-02
  • 2011-02-19
  • 2014-03-25
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多