【问题标题】:Session storage not giving actual value会话存储没有给出实际价值
【发布时间】:2022-01-11 04:43:08
【问题描述】:

我正在尝试 console.log 从会话存储的输入中获取的值,但它给了我 “[object HTMLInputElement”而不是输入的实际值可以做什么?这是我的代码

let us = document.getElementById('us')
sessionStorage.setItem("user",us)
setTimeout(function() {
let h = sessionStorage.getItem("user")
console.log(h)
}, 200);

【问题讨论】:

  • 你在存储什么
  • 这是来自输入的字符串
  • 显然不是,否则你会得到一个字符串。
  • 我在直接记录它时得到了一个具有确切值的字符串:/ 所以我很确定它是一个字符串,我不确定为什么会发生这种情况。它之后的值,现在它给了我一条空消息
  • document.getElementById('us') 返回一个HTMLInputElement。如果您在存储元素的value 时返回一个空白值,并且其中实际上有一个值,那么您可能将其保存在错误的位置——如果没有足够的示例来理解,就无法知道您的代码实际上是如何工作的

标签: javascript html session-storage


【解决方案1】:

您的脚本工作正常,但 document.getElementById('us') 是 html 元素,您存储的是 HTML 元素。我认为您需要价值或其他东西,您可以像这样编写或更改 document.getElementById('us').value 或您需要做的事情。

【讨论】:

  • 哦,是的,我忘记添加了,现在我得到的只是一个空日志?我说这是一条空消息
  • Himm.. 我重视“测试”,让我们让它发挥作用。你能调试你的代码吗?或者您可以复制您的代码并在 devtools 控制台中给 let us = 'test'。你会看到工作。我认为调试你的代码,你就会明白你忘记了什么
【解决方案2】:

正如@Huseyint所说,你必须使用<HTMLInputElement>.value来获取输入字段的值。更多信息here。例如,您的代码将被重写如下:

const us = document.getElementById('us');
sessionStorage.setItem('user', us.value);
const h = sessionStorage.getItem('user');
console.log(h);

或者,如果您想保存所有属性,您可以执行以下操作:

const us = document.getElementById('us');
sessionStorage.setItem('user', us);
const h = sessionStorage.getItem('user').value;
console.log(h);

任何一个都应该工作。另外,请注意setItem() 不是承诺,因此您不需要setTimeout

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2021-10-20
    • 2023-03-08
    • 1970-01-01
    • 2013-04-28
    • 2015-05-14
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    相关资源
    最近更新 更多