在 sessionStorage.setitem 中存储值时仅获取最后输入的值
Only getting the last entered value when storing a value in sessionStorage.setitem
好吧,假设我在 HTML 页面中输入了这两个值:20、30。
我有这两个变量,我从 HTML 页面获取值,它工作正常,所以 BrugerFugt=20,BrugerTemp=30:
BrugerFugt = document.getElementById("40").value;
BrugerTemp = document.getElementById("41").value;
然后我使用这两个变量并使用 setItem。
sessionStorage.setItem("BF", JSON.stringify(BrugerFugt));
sessionStorage.setItem("BT", JSON.stringify(BrugerTemp));
此时如果我 console.log(JSON.stringify(BrugerFugt)),它应该打印 20。
现在我想将它发送到我的服务器,所以我调用这个变量:
serverConnection.send(JSON.stringify(SetBruger));
我已经定义了这个变量,我正在发送到我的服务器。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"),
brugerF: sessionStorage.getItem("BF")
}
然后我尝试打印我的 JSON.stringify(SetBruger),但它打印的是我在 HTML 网络上输入的最后一个值,而不是新值。比方说,在我输入 20 和 30 之前,我输入了 40 和 60 之类的东西。然后当我在输入 20 和 30 后打印 SetBruger 时,我在我的终端中得到了这个打印。
test: {"command":"BrugerIndtastTF","brugerT":"\"40\"","brugerF":"\"60\""}
好像问题出现了,当我JSON.stringify(SetBruger)?
您的 object-properties 是在创建对象时设置的。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"), // set when object is created
brugerF: sessionStorage.getItem("BF") // set when object is created
}
您可以用 helper-function 包装该对象,在 return 之前更新该对象,或者将其替换为一个函数,该函数 return 是一个新创建的对象,其值来自 sessionStorage,例如这个:
function SetBruger() {
return {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"),
brugerF: sessionStorage.getItem("BF")
}
}
serverConnection.send(JSON.stringify(SetBruger));
为了能够 re-use 该对象并更新它的其他属性,使用 localstorage 的内容更新这两个属性的辅助函数将是一个很好的解决方案。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"), // set when object is created
brugerF: sessionStorage.getItem("BF") // set when object is created
}
// Other code that maybe modify the object
function updateBrugerObject() {
SetBruger.brugerT = sessionStorage.getItem("BT");
SetBruger.brugerF = sessionStorage.getItem("BF");
}
updateBrugerObject();
serverConnection.send(JSON.stringify(SetBruger));
最适合您的解决方案取决于您打算如何以及在何处使用该对象。
好吧,假设我在 HTML 页面中输入了这两个值:20、30。
我有这两个变量,我从 HTML 页面获取值,它工作正常,所以 BrugerFugt=20,BrugerTemp=30:
BrugerFugt = document.getElementById("40").value;
BrugerTemp = document.getElementById("41").value;
然后我使用这两个变量并使用 setItem。
sessionStorage.setItem("BF", JSON.stringify(BrugerFugt));
sessionStorage.setItem("BT", JSON.stringify(BrugerTemp));
此时如果我 console.log(JSON.stringify(BrugerFugt)),它应该打印 20。
现在我想将它发送到我的服务器,所以我调用这个变量:
serverConnection.send(JSON.stringify(SetBruger));
我已经定义了这个变量,我正在发送到我的服务器。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"),
brugerF: sessionStorage.getItem("BF")
}
然后我尝试打印我的 JSON.stringify(SetBruger),但它打印的是我在 HTML 网络上输入的最后一个值,而不是新值。比方说,在我输入 20 和 30 之前,我输入了 40 和 60 之类的东西。然后当我在输入 20 和 30 后打印 SetBruger 时,我在我的终端中得到了这个打印。
test: {"command":"BrugerIndtastTF","brugerT":"\"40\"","brugerF":"\"60\""}
好像问题出现了,当我JSON.stringify(SetBruger)?
您的 object-properties 是在创建对象时设置的。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"), // set when object is created
brugerF: sessionStorage.getItem("BF") // set when object is created
}
您可以用 helper-function 包装该对象,在 return 之前更新该对象,或者将其替换为一个函数,该函数 return 是一个新创建的对象,其值来自 sessionStorage,例如这个:
function SetBruger() {
return {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"),
brugerF: sessionStorage.getItem("BF")
}
}
serverConnection.send(JSON.stringify(SetBruger));
为了能够 re-use 该对象并更新它的其他属性,使用 localstorage 的内容更新这两个属性的辅助函数将是一个很好的解决方案。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"), // set when object is created
brugerF: sessionStorage.getItem("BF") // set when object is created
}
// Other code that maybe modify the object
function updateBrugerObject() {
SetBruger.brugerT = sessionStorage.getItem("BT");
SetBruger.brugerF = sessionStorage.getItem("BF");
}
updateBrugerObject();
serverConnection.send(JSON.stringify(SetBruger));
最适合您的解决方案取决于您打算如何以及在何处使用该对象。