【问题标题】:Save data to local storage将数据保存到本地存储
【发布时间】:2014-07-07 18:35:04
【问题描述】:

我正在尝试在本地存储中设置一堆变量,但函数没有运行,我尝试获取值但没有运气,如何在本地存储中保存字段?

function setPerson(){
var person = { 'name': getElementById('name'), 'photo': getElementById('photo')};

// Put the object into the storage
    alert(person);
    localStorage.setItem('person', JSON.stringify(person));
};

HTML 在 HTML 中,我从字段中将值放入标签并填充它们,但是当我尝试获取它们并保存它们时,什么也没有发生......

我也尝试在那里取出固定值,然后显示警报,但它只说对象而不是值

var testObject = { 'one': 1, 'two': 2, 'three': 3 };

// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
alert('retrievedObject: ', JSON.parse(retrievedObject));;

【问题讨论】:

  • 我以另一种形式调用它,我可以看到它被称为
  • 不要使用alert进行调试,使用console!你有一个复杂的对象,所以alert 总是说[ObjectObject]
  • 好的,还是不接受
  • 如果你想使用 alert 你应该使用 '+' 而不是 ',': alert('retrievedObject: '+ JSON.parse(retrievedObject));

标签: javascript jquery local-storage


【解决方案1】:

你可以像这样使用 localStorage:

// Retrieve your data from locaStorage
var saveData = JSON.parse(localStorage.saveData || null) || {};

// Store your data.
function saveStuff(obj) {
  saveData.obj = obj;
  // saveData.foo = foo;
  saveData.time = new Date().getTime();
  localStorage.saveData = JSON.stringify(saveData);
}

// Do something with your data.
function loadStuff() {
  return saveData.obj || "default";
}

jsFiddle

【讨论】:

  • 喜欢 localStorage 的易用性。
【解决方案2】:

首先,您应该使用console 而不是alert

而且,如果你想在某个地方使用检索到的对象,你最好将它存储在一个变量中:

var testObject = { 'one': 1, 'two': 2, 'three': 3 };
localStorage.setItem('testObject', JSON.stringify(testObject));
var retrievedObject = JSON.parse(localStorage.getItem('testObject'));
console.log('retrievedObject: ', retrievedObject);

【讨论】:

  • 我相信 OP 意味着会话之间。
【解决方案3】:

W3C Schools 为您提供了有关如何使用 html 和本地存储的详细示例。

w3cSchools - Local Storage

【讨论】:

    【解决方案4】:

    getElementById 应该改为

        document.getElementById
    

    这也会让你获得整个 DOM 元素。我假设您想要标签内的内容,所以我会说使用

        document.getElementById('name').innerHTML
    

    相反。 当您尝试对其进行字符串化时,仅引用 DOM 元素会给您一个循环结构错误。

    我已确认有效的示例代码:

    <html>
    <head>
    </head>
    <body>
    <p id="name">Hello</p>
    <p id="photo">photo</p>
    <script>
    
    function setPerson(){
    var person = { 'name': document.getElementById('name').innerHTML, 'photo':    document.getElementById('photo').innerHTML};
    
    // Put the object into storage
    localStorage.setItem('person', JSON.stringify(person));
    }
    setPerson()
    </script>
    </body>
    </html>
    

    【讨论】:

      【解决方案5】:

      问题在于getElementById 返回一个HTML 元素,它是一个对象。

      然后,JSON.stringify 将尝试迭代它自己的属性。

      但可能他们没有(除非您手动添加)。

      既然你说它们是字段,你可以尝试保存它的value

      var person = {
          name: document.getElementById('name').value,
          photo: document.getElementById('photo').value
      };
      

      【讨论】:

        猜你喜欢
        • 2018-11-17
        • 2019-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-20
        • 1970-01-01
        • 2018-11-05
        相关资源
        最近更新 更多