好吧,假设我在 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) 时出现问题?
最佳答案
您的对象属性在创建对象时设置。
var SetBruger = {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"), // set when object is created
brugerF: sessionStorage.getItem("BF") // set when object is created
}
您可以使用辅助函数包装该对象,该函数在返回之前更新该对象,或者将其替换为返回新创建的对象的函数,其中包含来自 sessionStorage 的值,如下所示:
function SetBruger() {
return {
command: "BrugerIndtastTF",
brugerT: sessionStorage.getItem("BT"),
brugerF: sessionStorage.getItem("BF")
}
}
serverConnection.send(JSON.stringify(SetBruger));
为了能够重用该对象并更新它的其他属性,使用 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));
最适合您的解决方案是什么,取决于您计划使用该对象的方式和位置。
关于javascript - 在 sessionStorage.setitem 中存储值时仅获取最后输入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56276568/