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

最适合您的解决方案取决于您打算如何以及在何处使用该对象。