Javascript 我试图将数据变量推入本地存储器。为什么它没有定义?

Javascript 我试图将数据变量推入本地存储器。为什么它没有定义?,javascript,html,local-storage,Javascript,Html,Local Storage,我对使用localStorage非常陌生,请原谅我的无知和可能重复这个问题。我还没有得到任何答案 我有一个有很多输入标签的表单。我将它们的值存储在一个名为datavar data=document.querySelectorAll(“input”).value的变量中 当我执行window.localStorage.setItem('data',JSON.stringify(data.value))时 它使用未定义的值将数据存储在存储器中。 我知道我的var数据并没有真正捕获所有用户输入值,但我

我对使用localStorage非常陌生,请原谅我的无知和可能重复这个问题。我还没有得到任何答案

我有一个有很多输入标签的表单。我将它们的值存储在一个名为data
var data=document.querySelectorAll(“input”).value的变量中

当我执行
window.localStorage.setItem('data',JSON.stringify(data.value))时
它使用未定义的值将数据存储在存储器中。 我知道我的var数据并没有真正捕获所有用户输入值,但我不知道如何做到这一点


我的意图是使var数据成为一个对象,存储具有输入字段值的其他对象。然后将此数据推送到本地存储。如注释中所述,使用纯JS时,您需要循环输入以获取值,然后将它们存储在
localStorage
中。例如:

const inputs = document.querySelectorAll('input');

let data = [];
for (let input of inputs) {
  data.push(input.value);
}

window.localStorage.setItem('data', data);
另外,如果您真的试图将数据存储为JSON(可能是您试图使用
JSON.stringify()
)的原因),那么您可以执行以下操作(尽管如果您的
输入
元素具有唯一的id或name值,您可以将其用作键,而不仅仅是下面示例中所选输入的索引,这会更好)


试试这段代码,它会写入localStorage并从中读取到控制台(stackoverflow插入代码工具不允许使用localStorage,这就是代码位于不同JS沙盒中的原因):

代码:


名字:

姓氏:


让数据=document.querySelectorAll(“输入”); 设formData=[]; console.log('data',data);
for(设i=0;i您所做的基本上是
输入.value.value
,它是
未定义的
。您的
数据
已经是值,无需再次添加
.value
queryselectoral()
返回元素列表;它没有
.value
。此外,输入的值通常是文本;不需要
stringify()
。经验法则:除非您了解这些命令的作用,否则不要使用
JSON.parse()
JSON.stringify()
。即使在删除值时,它仍然是未定义的
const inputs = document.querySelectorAll('input');

let data = {};
inputs.forEach((input, i) => {
  data[i] = input.value;
});

window.localStorage.setItem('data', JSON.stringify(data));