【问题标题】:Printing List to DOM from array in Local Storage将列表从本地存储中的数组打印到 DOM
【发布时间】:2019-03-28 08:33:55
【问题描述】:

我觉得我在这方面非常接近。

有一个清单,我将其推送到一个阵列,并设置为本地存储。我想在重新实例化浏览器时从本地存储中重新打印列表

<script>

    localStorage.clear();

    var Array_ToDoList = [];
    var toDoCount = 0;

    $("#add-to-do").on("click", function(event) {
      event.preventDefault();
      var toDoTask = $("#to-do").val().trim();

      Array_ToDoList.push(toDoTask)
      localStorage.setItem("STR_Tasks", JSON.stringify(Array_ToDoList))

      console.log(Array_ToDoList);

      var toDoItem = $("<p>");
      toDoItem.attr("id", "item-" + toDoCount);
      toDoItem.append(" " + toDoTask);

      var toDoClose = $("<button>");
      toDoClose.attr("data-to-do", toDoCount);
      toDoClose.addClass("checkbox");
      toDoClose.append("✓");

      toDoItem = toDoItem.prepend(toDoClose);
      $("#to-dos").append(toDoItem);
      $("#to-do").val("");
      toDoCount++;
    });

    $(document.body).on("click", ".checkbox", function() {
      var toDoNumber = $(this).attr("data-to-do");
      $("#item-" + toDoNumber).remove();
      Array_ToDoList.splice(toDoNumber, 1);
      console.log(Array_ToDoList);
      localStorage.setItem("STR_Tasks", JSON.stringify(Array_ToDoList))
    });


    var StoredToDos = Array_ToDoList.length;
    for (var i = 0; i < StoredToDos; i++) {
    $("#to-dos").append(localStorage.getitem(STR_Tasks[i]));    
    }

  </script>

我知道我必须读取数组并重新打印,这可能与对我存储的内容进行去字符串化有关。

【问题讨论】:

  • JSON.parse(localStorage.getItem('STR_Tasks')).forEach(function(element) {//implementation});

标签: javascript jquery arrays html


【解决方案1】:

在脚本的第一行中,您清除本地存储中的所有键,因此您不能使用前面的列表,而是将 localStorage.clear() 替换为:

var Array_ToDoList = JSON.parse(localStorage.getItem('STR_Tasks') || '[]');

这将使您的脚本使用当前保存的 STR_Tasks。

【讨论】:

  • 这太棒了!我现在可以再次使用解析字符串在浏览器中再次“渲染”列出的项目。
  • 乐于助人:)
【解决方案2】:

根据我对字面代码的理解:

  1. 它是“localStorage.getItem”而不是“getitem”
  2. localStorage 中的密钥库是“STR_Tasks”,它只是字符串,不是可迭代类型
  3. 我认为您应该将对象“todoItem”推送到“Array_ToDoList”中,然后将“JSON.stringify”存储到 localStorage 中

最后,你可以这样做:

var tasks = JSON.parse(localStorage.getItem("STR_Tasks"));
for (var i = 0; i < StoredToDos; i++) {
    $("#to-dos").append(tasks[i]);    
}

【讨论】:

    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2013-10-08
    • 2016-08-18
    相关资源
    最近更新 更多