【问题标题】:Saving more data to local storage将更多数据保存到本地存储
【发布时间】:2017-02-01 15:28:57
【问题描述】:

我知道这是使用 JSON 的最佳方式,但它太复杂了,我无法理解。因此,请问是否有任何其他方法可以确保我的数据不会覆盖本地存储。使用 for 循环或使用其他键名的示例。请提供我的示例来帮助我,因为我对 HTML/JavaScript 非常陌生。

function saveToLS(){

    var Name = document.getElementById("rName");
    var namesaved = Name.value;
    localStorage.setItem("Name",namesaved);


    var Comment = document.getElementById("rComment");
    var commentsaved = Comment.value;
    localStorage.setItem("Comment",commentsaved);   


}

【问题讨论】:

  • 很多人喜欢使用 JSON,因为 JSON 对象内置了一些强大的方法,因此我们可以轻松地检索数据。如果你不想使用JSON,你应该像上面一样手动添加所有的键,然后一个一个地检索。
  • 使用标识符(唯一键)或命名空间,这样您的数据就不会被覆盖
  • 但是我该怎么做呢?我尝试手动为他们设置不同的密钥。但是,当存储在我的本地存储中时,值都是一样的

标签: javascript local-storage


【解决方案1】:

您要存储多个这些吗?您应该将它们存储在数组或对象中(例如添加时间戳 id 字段)并将该数组存储在 LS 中。

【讨论】:

    【解决方案2】:

    Yeah..Me Also new In this Part... but I hope to you help full this code please try It..
    
    var key = 0;
    
    for(key;key<10;key++){
      localStorage.setItem(key, localStorage.getItem(key) + "Datas");
    }

    【讨论】:

      【解决方案3】:

      最好的选择是使用 JSON。 JSON 不是很复杂。它只是一个字符串,它是对数组或对象等语言结构进行字符串化的结果。

      你需要的是一个数组:[],它的字符串化版本:"[]"。所以你需要将一个元素推入数组。如何?通过解析将存储的 JSON 字符串转换为数组,然后推送一个元素并将新数组字符串化。这是一个例子:

      var names = localStorage.getItem("Name");
      names = names ? JSON.parse(names) : [];
      names.push('newName');
      
      localStorage.setItem("Name", JSON.stringify(names));
      

      也不要使用 2 个键来存储属于一个项目的 2 个数据。会很难维护。使用一个对象,一个对象数组:

      comments.push({
        author: 'name of the author',
        comment: 'here goes the comment body...'
      })
      

      【讨论】:

        【解决方案4】:
        function saveToLS(){
        
        var Name = document.getElementById("rName");
        var namesaved = Name.value;
        if(localStorage.setItem("Name").length){   //the data already exists
             // Do whatever if the data already Exists......
        }else{
            localStorage.setItem("Name",namesaved);
        }
        
        
        var Comment = document.getElementById("rComment");
        var commentsaved = Comment.value;
        
        
        if(localStorage.setItem("Comment").length){ //the data already exists
             // Do whatever if the data already Exists......
        }else{
            localStorage.setItem("Comment",commentsaved);
        }   
        

        }

        使用 localStorage.getItem() 检查数据是否已经存在,如果数据为真,请不要再次写入数据,或者做任何你想做的事情,比如用另一个键保存数据

        if(localStorage.setItem("Name").length){   //the data already exists
         localStorage.setItem("SomethingElse...",namesaved); //something else
        }else{
           localStorage.setItem("Name",namesaved); 
        }
        

        【讨论】:

        • for the part //如果数据已经存在,请执行任何操作。我不太明白该怎么做
        • 我的意思是,如果某些数据已经存在,您想覆盖它,保留旧数据或同时存储旧数据和新数据,您想做什么?
        • 我想同时存储新旧数据。覆盖是我在创建博客时不想发生的问题。而且我有一个特定的地方可以打印它
        猜你喜欢
        • 2014-07-07
        • 2018-11-17
        • 2019-01-03
        • 1970-01-01
        • 1970-01-01
        • 2020-08-20
        • 1970-01-01
        • 2018-11-05
        相关资源
        最近更新 更多