Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据保存到本地存储器_Javascript_Jquery_Local Storage - Fatal编程技术网

Javascript 将数据保存到本地存储器

Javascript 将数据保存到本地存储器,javascript,jquery,local-storage,Javascript,Jquery,Local Storage,我试图在本地存储中设置一堆变量,但函数没有运行,我试图获取值,但运气不好,如何在本地存储中保存字段 function setPerson(){ var person = { 'name': getElementById('name'), 'photo': getElementById('photo')}; // Put the object into the storage alert(person); localStorage.setItem('person', JSON.s

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

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));;

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

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

但是,它们可能没有(除非您手动添加它们)

因为您说它们是字段,所以可以尝试保存其

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

首先,您应该使用
控制台
而不是
警报

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

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);

您可以像这样使用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";
}

应将getElementById更改为

    document.getElementById
此外,这将获得整个DOM元素。我想你想要标签里面的东西,所以我会说使用

    document.getElementById('name').innerHTML
相反。 当您试图对DOM元素进行字符串化时,仅引用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>

你好

照片

函数setPerson(){ var person={'name':document.getElementById('name').innerHTML,'photo':document.getElementById('photo').innerHTML}; //将该对象放入存储器 setItem('person',JSON.stringify(person)); } setPerson()
W3C学校提供了有关如何使用html和本地存储的详细示例


我正在以另一种形式调用它,我可以看到它被调用。不要使用
警报
出于调试目的,请使用
控制台
!您有一个复杂的对象,因此
alert
总是说
[objectobjectobject]
好的,仍然不会收到它如果您想使用alert,您应该使用“+”而不是“,”:alert('retrievedObject:'+JSON.parse(retrievedObject));我喜欢本地存储的易用性。我相信OP的意思是在会话之间。