javascript - 在 sessionStorage.setitem 中存储值时仅获取最后输入的值

标签 javascript json parsing storage stringify

好吧,假设我在 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/

相关文章:

javascript - CHART.JS 如何偏移/移动/调整 y 轴上的标签使其位于网格线的中间而不是在网格线的中心?

sql - 将 JSON 数据提取到简单的列中

java - 如何验证 URL 在 Java 1.6 中是否有效?

javascript - 如何在多个对象上放置点击事件

javascript - WaitForControlEnabled() 性能

json - 如何使用jq输出JSONL(每行一个独立的JSON对象)

json - 一次从 Perl JSON 获取单个键值

python - NLTK:如何遍历名词短语以返回字符串列表?

python - 在python中解析文件

javascript - Jquery AJAX json - 未调用